pandas使用笔记(一)导入,查看,读取数据

174 阅读2分钟

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'
"""