pandas 预设
# 安装
pip install pandas pytables
# 导入
import pandas as pd
# 常用预设
# 下面两行命令均可显示数据的全部行
pd.set_option('display.max_rows', None)
# pd.options.display.max_rows = None
# 下面两行命令均可显示数据的全部列
pd.set_option('expand_frame_repr', False)
# pd.options.display.max_columns = None
# 显示数据的精度(保留小数点后第几位), 不会影响数据实际存储的值
pd.set_option('precision', 2)
pandas 导入和查看数据(DataFrame)
导入数据
这里以Excel数据为例, CSV,HDF等格式可以类似得到(具体请参考官方文档)
# 下列命令表示读取'test.xlsx'工作簿中的'Sheet 1'工作表
# 跳过第一行进行读取, 将列名设为第一行, 索引(行名)设为第一列(也可以使用列名, 如['date'])
# 设定编码为UTF-8(一般不乱码的话不需要设置), 设置将字符串转换为日期格式
df = pd.read_excel('test.xlsx',
sheet_name="sheet 1",
header=0,
skiprows=1,
index_col=0,
encoding='utf8',
parse_dates=['date'],
)
查看
# 查看dataframe前5行
df.head(5)
# 查看后5行
df.tail(5)
# 查看3个样本(随机抽样), 固定比例则需要使用`frac=0.5`参数,表示抽取50%的数据
df.sample(3)
# 数据描述, 包含:行数,均值,标准差,最值,25,50,75分位数
df.describe()
DataFrame数据选取
生成测试数据
import numpy as np
arr = np.array([
["jack",78,10],
["lili",86,0],
["amy",97,20],
["tom",100,30]
])
df = pd.DataFrame(arr,index=["1","2","3","4"],columns=["a","b",'c'])
print(df)
"""
a b c
1 jack 78 10
2 lili 86 0
3 amy 97 20
4 tom 100 30
"""
按列名选取
# 此时选出的数据仍为DataFrame类型, 可以同时选出多个列
df[['a']]
# 此时选出的数据为Series类型
df['a']
# .loc()方法进行选取(通过列名进行数据选取)
df.loc[:, 'a']
"""
1 jack
2 lili
3 amy
4 tom
Name: a, dtype: object
"""
# 选取第a,c列
df.loc[:, ['a','c']]
"""
a c
1 jack 10
2 lili 0
3 amy 20
4 tom 30
"""
# 范围选取
df.loc[:, 'a':'c']
"""
a b c
1 jack 78 10
2 lili 86 0
3 amy 97 20
4 tom 100 30
"""
按行名选取
df.loc['1'] # 选取第一行, 为Series类型数据
"""
a jack
b 78
c 10
Name: 1, dtype: object
"""
df.loc[['1','3']] # 选取第1,3行
'''
a b c
1 jack 78 10
3 amy 97 20
'''
df.loc['1': '3'] # 选取1到3行(范围选取)
"""
a b c
1 jack 78 10
2 lili 86 0
3 amy 97 20
"""
按行号列号进行读取
# 使用.iloc()操作
df.iloc[0] # 第1行
df.iloc[:, 1] # 第2列
df.iloc[0:2, 0:2] # 第1,2行, 第1,2列
df.iat[1,2] # 第2行第3列元素
任意读取
# 读取所有行和列
df.loc[:]
# 等价于 df[:]
"""
a b c
1 jack 78 10
2 lili 86 0
3 amy 97 20
4 tom 100 30
"""
# 读取指定某个元素, .at()方法效率更高
df.at['1','a']
# 等价于df.loc['1','a']
"""
'jack'
"""