导入
import numpy as np
import pandas as pd
常用设置
详细设置参考:pandas.set_option 用法总结
pd.set_option('display.max_columns', None) # 最多显示列数
pd.set_option('display.max_rows', None) # 最多显示行数
pd.set_option('display.max_colwidth',1000) # 单列最大宽度
pd.set_option('display.width', None ) # 表最大宽度
pd.set_option('display.multi_sparse', False) # 多层索引时全部显示
pd.set_option('display.colheader_justify', 'left') # 表头居左(left)、居右(right)显示、居中(center)显示
pd.set_option('display.date_dayfirst', 'True') # 日期显示:日期在前
pd.set_option('display.date_yearfirst', 'True') # 日期显示:年份在前
pd.set_option('display.encoding', 'utf-8') # 控制台打印字符编码,默认为utf-8
生成对象
用值列表生成 Series 时,Pandas 默认自动生成整数索引:
# 生成带有索引的一维数组
s =pd.Series([1,3,5,np.nan,6,8])
用含日期时间索引与标签的 NumPy 数组生成 DataFrame :
# 生成时间序列数据
dates =pd.date_range('20130101',periods=6)
# 生成日期索引、指定列名的DF
df =pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
用 Series 字典对象生成 DataFrame:
# 每个键值对对应一列,键为列名,值为列值,索引为自增数字
df2 = pd.DataFrame({'A':1.,
'B':pd.Timestamp('20130102'),
'C':pd.Series(1,index=list(range(4)),dtype='float32'),
'D':np.array([3]*4,dtype='int32'),
'E':pd.Categorical(["test","train","test","train"]),
'F':'foo'})
查看数据类型
# 使用dtypes方法查看df中各列数据类型
df2.dtypes
查看数据
# 查看头部,方法,接受行数
df.head(5)
# 查看尾部,方法,接受行数
df.tail(5)
# 查看索引,属性,不带括号
df.index
# 查看列名,属性,不带括号
df.columns
# 转换为numpy类型,丢失索引和列名,异构数据(多种类型)会占用较多资源
df.to_numpy()
# 查看数据统计摘要
df.describe()
# 输出分位数信息
df.describe(percentiles=[.05, .25, .75, .95])
查看数据列
# 查看列是否包含重复值
df['col'].is_unique
# 查看列是否单调
df['col'].is_monotonic
# 查看列是否单调递增
df['col'].is_monotonic_increasing
# 查看列是否单调递减
df['col'].is_monotonic_decreasing
# 查看列是否包含na值,返回布尔索引列
df['col'].isna()
# 查看列是否为null值,返回布尔索引列
df['col'].isnull()
转置和排序
# 转置
df.T
df.transpose()
# 对索引排序,axis=0对行排序,ascending=True降序,ascending=False升序
df.sort_index(axis=0, ascending=False)
# 对索引排序,axis=1对列排序,ascending=True降序,ascending=False升序
df.sort_index(axis=1, ascending=False)
# 排序后的索引,按照索引切片时会按照排序后的索引选择数据,相当于改变了df的index属性顺序
df.sort_index().loc(0:2)
# 对单列排序,by=列名,对指定列排序
df.sort_values(by='B')
# 对多列排序,by=[列名1, 列名2]
df.sort_values(by=['A', 'B'])
df.sort_values(['A', 'B'])
# 对单列降序排列,ascending=False
df.sort_values('A', ascending=False)
# 对多列混合排列,ascending=[True, False]
df.sort_values(['A', 'B'], ascending=[True, False])
df.sort_values(['A', 'B'], ascending=[1, 0])