一、读取文件
Pandas的主业是数据分析。因此,从外部文件读/写数据是Pandas的重要功能。Pandas提供了多种API函数用于支持多种类型数据(如CSV、Excel、SQL等)的读写,其中常用的函数如下表所示。
| 文件类型 | 读取函数 | 写入函数 |
|---|---|---|
| xls/xlsx | read_excel |
to_excel |
| CSV | read_csv |
to_csv |
| SQL | read_sql |
to_sql |
| JSON | read_json |
to_json |
| HTML | read_html |
to_html |
| HDF5 | read_hdf |
to_hdf |
| pickle | read_pickle |
to_pickle |
Pandas可以将读取到的表格型数据转换为DataFrame数据,然后通过操作DataFrame进行数据分析、数据预处理及行列操作。
我们以CSV文件为例讨论一下Pandas是如何处理文件的,其他类型文件的操作也是类似的。
假设数据源为Salaries.csv,下面先利用Pandas的read_csv()方法读取数据。
In [1]: import pandas as pd
In [2]: data =pd.read_csv('Salaries.csv')
In [3]: data
Out[3]:
rank discipline phd service sex salary
0 Prof B 56 49 Male 186960
1 Prof A 12 6 Male 93000
2 Prof A 23 20 Male 110515
3 Prof A 40 31 Male 131205
4 Prof B 20 18 Male 104800
.. ... ... ... ... ... ...
73 Prof B 18 10 Female 105450
74 AssocProf B 19 6 Female 104542
75 Prof B 17 17 Female 124312
76 Prof A 28 14 Female 109954
77 Prof A 23 15 Female 109646
[78 rows x 6 columns]
为了适应各种应用场景,read_csv()方法还配置了大量参数,这里仅说明部分常用的参数,更多内容可参考Pandas官网。
filepath_or_buffer:指定要读取的数据源,可以是网络链接地址URL,也可以是本地文件。sep:指定分隔符,如果不指定参数,默认将英文逗号作为数据字段间的分隔符号。delimiter:定界符,备选分隔符(如果指定该参数,则前面的sep参数失效),支持使用正则表达式来匹配某些不标准的CSV文件。Delimiter可视为sep的别名。header:指定行数作为列名(相当于表格的表头,用来说明每个列的字段含义),如果文件中没有列名,则默认为0(即设置首行作为列名,真正的数据在0行之后)。如果没有表头,则起始数据就是正式的待分析数据,此时这个参数应该设置为None。index_col:指定某个列(比如ID、日期等)作为行索引。如果这个参数被设置为包含多个列的列表,则表示设定多个行索引。如果不设置,Pandas会启用一个0~n-1(n为数据行数)范围内的数字作为列索引。converters:用一个字典数据类型指明将某些列转换为指定数据类型。在字典中,key用于指定特定的列,value用于指定特定的数据类型。parse_dates:指定是否对某些列的字符串启用日期解析,它是布尔类型的,默认为False,即字符串被原样加载,该列的数据类型就是Object(相当于Python内置的字符串数据str)。如果设置为True,则这一列的字符串(如果是合法字符串的话)会被解析为日期类型。
二、DataFrame中的常用属性
DataFrame常用属性的名称及描述如下表所示。
| 属性名称 | 说明 |
|---|---|
index |
行索引 |
index.name |
行索引名称 |
columns |
列索引 |
columns.name |
列索引名称 |
values |
存储DataFrame数值的numpy数组 |
axes |
行索引和列索引 |
ndim |
维度 |
shape |
形状,元组 |
size |
元素个数 |
dtypes |
列的数据类型 |
T |
DataFrame行列转置 |
In [4]: data.dtypes
Out[4]:
rank object
discipline object
phd int64
service int64
sex object
salary int64
dtype: object
In [5]: data['salary'].dtype
Out[5]: dtype('int64')
In [6]: data.shape
Out[6]: (78, 6)
In [7]: data.ndim
Out[7]: 2
In [8]: data.columns
Out[8]: Index(['rank', 'discipline', 'phd', 'service', 'sex', 'salary'], dtype
'object')
In [9]: data.axes
Out[9]:
[RangeIndex(start=0, stop=78, step=1),
Index(['rank', 'discipline', 'phd', 'service', 'sex', 'salary'], dtype='object
)]
In [10]: data.values
Out[10]:
array([['Prof', 'B', 56, 49, 'Male', 186960],
['Prof', 'A', 12, 6, 'Male', 93000],
['Prof', 'A', 23, 20, 'Male', 110515],
['Prof', 'A', 40, 31, 'Male', 131205],
['Prof', 'B', 20,

本文介绍了Pandas库在数据处理中的关键功能,包括读取CSV、Excel等文件,数据转换,DataFrame属性与方法,条件过滤,排序操作,以及聚合与分组。此外,还详细讲解了如何处理缺失值,如用平均值、众数填充,以及预处理数据的重要性。
最低0.47元/天 解锁文章
1475





