0%

Chapter01

第一章:数据载入及初步观察

总结一下每天发现的不会的地方

任务1.2:载入数据中的read_csv & read_table

【思考】(知道数据加载的方法后,试试pd.read_csv()和pd.read_table()的不同,如果想让他们效果一样,需要怎么做?了解一下’.tsv’和’.csv’的不同,如何加载这两个数据集?):

  1. read_csv读取csv(comma-separated values (csv))文件,read_table读取general delimited file通用分隔符文件,包括csv文件

  2. tsv是以tab分隔的,而csv是以英文逗号分隔的; tsv文件可以直接用read_table读取,csv文件既可以用read_table也可以用read_csv

  3. pandas文档介绍中指出“如果如果read_table的sep参数为 None,C 引擎无法自动检测分隔符,但 Python 解析引擎可以,这意味着将使用后者并通过 Python 的内置嗅探器工具 csv.Sniffer 自动检测分隔符”但是我在实际使用时,如果不加sep=”,”的话,len(df.columns)输出1,加了的话输出12,是不是说明并没有自动识别到呢

任务1.4:将表头改成中文,索引改为乘客ID

【思考】所谓将表头改为中文其中一个思路是:将英文列名表头替换成中文。还有其他的方法吗?

课程是在读取时指定的新列名,也可以在读取后再修改:参考链接

1
2
3
4
5
6
1.columns:
df.columns = ['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口']
df.set_index('乘客ID')

2.rename:
df.rename(columns={'oldname_1':'newname_1','oldname_2':'newname_2'},index_col='乘客ID')

rename可以指定想更改哪几列的名称,columns必须把所有的列名都列出,即使没有更改的

任务4.5:删除列

【思考】还有其他的删除多余的列的方式吗?

课程使用的是del列,但是局限在于,del每次只能删除一列,然后在delftstack查到了另外两种,drop和pop,

1
2
3
4
5
6
7
8
9
10
11
12
1.df.drop()
用法:DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)
参数说明:
labels 就是要删除的行列的名字,用列表给定
axis 默认为0,指删除行,因此删除columns时要指定axis=1
index 直接指定要删除的行
columns 直接指定要删除的列
inplace=False,默认该删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe;
inplace=True,则会直接在原数据上进行删除操作,删除后无法返回。

2.df.pop()
DataFrame.pop(item) 方法返回该元素并将其从 DataFrame 中删除,感觉很像”出栈“?

任务5.5:iloc和loc

一、loc:根据标签(label)索引

  1. 行根据行标签,也就是索引筛选,列根据列标签,列名筛选

  2. 如果选取的是所有行或者所有列,可以用:代替

  3. 行标签选取的时候,两端都包含,比如[0:5]指的是0,1,2,3,4,5

二、iloc:根据行标签的位置索引。iloc就是 integer loc ,可以理解为是在loc的基础上,用整数索引。即iloc是基于位置索引的,也就是我们常说的几行几列。

  1. iloc基于位置索引,简单来说,就是第几行第几列,只不过这里的行列都是从0开始的

  2. 如果选取的是所有行或者所有列,可以用:代替

  3. iloc的[0:x]中不包括x,只能到x-1.

任务6.1:pandas排序

任选多列数据同时降序排序

1
frame.sort_values(by=['a', 'c'], ascending=False)

多列排序是分主次的,先排第一序列的,如果有相同的再依次排后面的,上面的代码就表示需要先排 a 列,如果a列有相同的值,那么在相同值得排序依据是 c 列

课程来源:

第一单元项目集合