# 安装及导入

# 安装

可以使用 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

Series 的各种方法

# 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 的各种方法

下面将以 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()

pandas 读取 / 写入文件

# 查看数据

# 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)    # 方法二

reindex 和 rename

# 排序

# 按索引排序
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

# 参考资料