安装及导入
安装
可以使用 pip 安装
pip install pandas
导入
import pandas as pd
数据结构
Series
Series 是一种类似于一维数组的对象,它由一组数据(各种 Numpy 数据类型)以及一组与之相关的数据标签(即索引)组成
Series 只有行索引
例如,创建一个 Series 对象:
ser = pd.Series(data = [1, 2, 3], index = ['a', 'b', 'c'])
其内容为:
a 1
b 2
c 3
DataFrame
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)
DataFrame 既有行索引又有列索引
例如,创建一个 DataFrame 对象:
df = pd.DataFrame(data = np.array([[1, 2, 3], [4, 5, 6]]), columns = ['a', 'b', 'c'])
其内容为:
a b c
0 1 2 3
1 4 5 6
下面将以 DataFrame 对象为例来介绍 pandas 的基本用法
数据输入
# 使用 read_csv 读取 csv 文件
df = pd.read_csv('file_name')
# 或者:使用 read_csv 读取 csv 文件
# read_csv 默认使用 '\t' 作为数据分隔符,需将分隔符设为 ','
df = pd.read_table('file_name', sep=',')
# 读取 excel 文件
pd.read_excel()
# 读取 json 文件
pd.json()
# 读取 xml 文件
pd.read_xml()
数据输出
# 将 DataFrame 对象写入 csv 文件
df.to_csv('file_name')
# 写入 excel 文件
df.to_excel()
# 写入 json 文件
df.to_json()
# 写入 xml 文件
df.to_xml()
查看数据
# DataFrame 对象的头部数据(默认显示 5 条数据)
df.head()
# DataFrame 对象的尾部数据(默认显示 5 条数据)
df.tail()
# DataFrame 对象的索引
df.index
# DataFrame 对象的列名
df.columns
# DataFrame 对象的统计信息
df.describe()
# DataFrame 对象的摘要
df.info()
# DataFrame 对象的形状
df.shape
# 查看数据是否为空
df.isnull()
# 查看各数据类型
df.dtypes
# 查看某一列的所有值
df[['column_name']] # 方法一
df.loc[:, ['column_name']] # 方法二
# 查看某一列的变量名及种类
df['column_name'].value_counts() # 方法一
df['column_name'].unique() # 方法二
# 查看满足条件的值
df[condition]
# 最大值对应的索引
df.idxmax()
# 最小值对应的索引
df.idxmin()
缺失值处理
pandas 主要用 np.nan
表示缺失数据
一般情况下,运算时默认排除缺失值
# 查找缺失值
df.isnull()
# 查找非缺失值
df.notnull()
# 删除所有含缺失值的行
df.dropna(how='any')
# 用 0 填充缺失值
df.fillna(value=0)
重复值处理
# 查看 DataFrame 数据中的重复值
df.duplicated()
# 统计 DataFrame 数据中重复值的个数
df.duplicated().sum()
# 删除 DataFrame 数据中的重复值
df.drop_duplicates()
索引变换
# 重置索引
df.reset_index()
# 将现有的列设为索引
df.set_index('column_name')
# 修改索引与列标签
df.reindex(index=index_labels, columns=column_labels) # 方法一
df.rename(index=index_labels, columns=column_labels) # 方法二
排序
# 按索引排序
df.sort_index()
# 按行列的值排序
df.sort_values()
# 按某一列排序
df.sort_values(by='column_name')
# 按多列排序
df.sort_values(by=['column_name_1', 'column_name_2'])
特别地,如果数据含有空值,可以用 na_position
参数处理空值,例如:
df.sort_values(na_position='first')
特征处理
按照数据的值进行离散化
pd.cut()
# 按照数据的数量进行离散化
pd.qcut()
# 替换数据值
df.replace()
# 替换数据值
df.map()
# one-hot 编码
pd.get_dummies()
具体用法请参考 pandas Document
数据拼接
# 既可以横向拼接,又可以纵向拼接
pd.concat()
# 横向拼接
pd.merge()
# 横向拼接 DataFrame 对象
df.join()
# 纵向拼接 DataFrame 对象
df.append()
Merge, join, concatenate and compare
数据分组
- 分割:按条件把数据分割成多组
- 应用:为每组单独应用函数
- 组合:将处理结果组合成一个数据结构
具体请参考:Groupby API