第一章:数据载入及初步观察
总结一下每天发现的不会的地方
任务1.2:载入数据中的read_csv & read_table
【思考】(知道数据加载的方法后,试试pd.read_csv()和pd.read_table()的不同,如果想让他们效果一样,需要怎么做?了解一下’.tsv’和’.csv’的不同,如何加载这两个数据集?):
read_csv读取csv(comma-separated values (csv))文件,read_table读取general delimited file通用分隔符文件,包括csv文件
tsv是以tab分隔的,而csv是以英文逗号分隔的; tsv文件可以直接用read_table读取,csv文件既可以用read_table也可以用read_csv
pandas文档介绍中指出“如果如果read_table的sep参数为 None,C 引擎无法自动检测分隔符,但 Python 解析引擎可以,这意味着将使用后者并通过 Python 的内置嗅探器工具 csv.Sniffer 自动检测分隔符”但是我在实际使用时,如果不加sep=”,”的话,len(df.columns)输出1,加了的话输出12,是不是说明并没有自动识别到呢
任务1.4:将表头改成中文,索引改为乘客ID
【思考】所谓将表头改为中文其中一个思路是:将英文列名表头替换成中文。还有其他的方法吗?
课程是在读取时指定的新列名,也可以在读取后再修改:参考链接
1 | 1.columns: |
rename可以指定想更改哪几列的名称,columns必须把所有的列名都列出,即使没有更改的
任务4.5:删除列
【思考】还有其他的删除多余的列的方式吗?
课程使用的是del列,但是局限在于,del每次只能删除一列,然后在delftstack查到了另外两种,drop和pop,
1 | 1.df.drop() |
任务5.5:iloc和loc
一、loc:根据标签(label)索引
行根据行标签,也就是索引筛选,列根据列标签,列名筛选
如果选取的是所有行或者所有列,可以用:代替
行标签选取的时候,两端都包含,比如[0:5]指的是0,1,2,3,4,5
二、iloc:根据行标签的位置索引。iloc就是 integer loc ,可以理解为是在loc的基础上,用整数索引。即iloc是基于位置索引的,也就是我们常说的几行几列。
iloc基于位置索引,简单来说,就是第几行第几列,只不过这里的行列都是从0开始的
如果选取的是所有行或者所有列,可以用:代替
iloc的[0:x]中不包括x,只能到x-1.
任务6.1:pandas排序
任选多列数据同时降序排序
1 | frame.sort_values(by=['a', 'c'], ascending=False) |
多列排序是分主次的,先排第一序列的,如果有相同的再依次排后面的,上面的代码就表示需要先排 a 列,如果a列有相同的值,那么在相同值得排序依据是 c 列