基本概念
在pandas中,DataFrame指的是数据表,其columns属性是列头,index属性是行头,未指定的情况下都为自增整数序列。
Series指的是数据列。所以读取一个数据表文件会返回一个DataFrame,选择某一列会返回一个Series。
所有内容默认按如下方式引入pandas
1 | import pandas as pd |
读取数据
使用read_table()
方法读取数据文件
1 | data = pd.read_table('file') # file参数可以是文件路径,也可以是http地址 |
sep
参数
默认的分隔符为TAB
,可以使用sep
参数指定分隔符
1 | data = pd.read_table('file', sep=',') #例如将分隔符指定为","可以读取csv文件 |
header
参数
默认会把第一行当作header,可以通过指定header=None
告诉pandas文件中没有header
1 | data = pd.read_table('file', sep=',', header=None) |
names
参数
如果想给读入的表指定header,可以通过names
参数传入,会按顺序依次对应表格的headers
1 | cols = ['Id', 'Name', 'Age', 'Address'] |
nrows
参数
使用nrows
参数读取固定行数
skiprows
参数
使用skiprows
参数可以让pandas从开始跳过固定行数后再读取数据。
skipfooter
参数
使用skipfooter
参数可以让pandas从最后向前跳过固定行。
使用其它方法读取特定类型的表格
除了使用read_table()这种方法外,针对特定类型的文件可以使用:
- read_csv()
- read_excel()
- read_json()
- read_html()
- read_clipboard()
- …
等读取特定类型的文件。
选择数据列
选择单列数据
可以有两种方式选择单列数据,效果相同,返回Series:
1 | data['Name'] |
但如果列名称中包含空格,或者列名称与data的内建属性名称相冲突,则只能用data['Name']
的方式。例如:
1 | data['Phone Number'] # 列名称包含空格 |
选择多列数据
读取时只读取选择列的数据
1 | data = pd.read_csv('file', usecols=['Id', 'Name', 'Age']) |
读入完整数据后选择列
1 | selected = ['Id', 'Name' ,'Age'] |
添加
添加新列
1 | data['Test'] = data.Name + ',' + data.Address # 添加名为Test的列 |
修改
修改列名称
1 | data.rename(columns = {'OldName1':'NewName1', 'OldName2':'NewName2'}, inplace=True) |
把表格列名称中的OldName1
改为NewName1
,OldName2
改为NewName2
。inplace=True
意思是就地修改
可以通过重新赋值columns属性整体替换列名称,例如:
1 | new_cols = ['NewCol1', 'NewCol2', 'NewCol3'] |
删除
删除列
可以使用drop()
方法删除列:
1 | data.drop('Age', axis=1, inplace=True) #删除单列 |
其中axis
为坐标轴,axis=0
是行坐标轴,对应的为行。axis=1
为列坐标轴,对应的为列。代码中axis=1
意思就是从列中删除名为“Age”的列。inplace=Ture
意思是修改发生在当前data中。
删除行
同样可以使用drop()
方法删除行, 只要指定axis=1
即可。
1 | data.drop([0,1,3], axis=0, inplace=True) #删除多列 |
axis=0
可以省略,不过建议保留,可以明确看出来到底在做什么。
显示数据
- head() 显示数据的前几行,可以指定行数,默认5行。
- describe() 对于数据类型为数字的列,显示行数、均值、最大、最小、标准等
- columns 显示表格行所有列标题
- shape 显示表格行列大小
- dtypes 显示表格各列的数据类型
排序
单列排序
使用列的sort_values()
方法排序,返回新的排序后的列,并不改变原数据的顺序
1 | data['Age'].sort_values() #按照升序排序Age列,返回Series |
表格排序
使用DataFrame的sort_values()方法给表格排序,返回排序后的表格,并不改变原数据的顺序。
1 | data.sort_values('Age') #按照Age升序排列 |
数据过滤
可以通过简易表达式返回Bool的Series
1 | #使用pandas的广播的特性 |
其它
更多参数可以参见pandas的官方文档。