Pandas 简明教程(二):读取文件、DataFrame常用属性/方法/条件过滤/聚合/分组

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

一、读取文件

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,下面先利用Pandasread_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-1n为数据行数)范围内的数字作为列索引。
  • 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, 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值