pandas查漏补缺

本文详细介绍了Pandas的多种数据操作,包括创建Series和DataFrame,多层索引,数据帧添加列,数据过滤,缺失值处理,时间序列分析等。还探讨了时间差、频率转换、日期和时间的相互转换以及重采样技术。此外,展示了Pandas的数据可视化方法,如直方图、线图和柱状图。
摘要由CSDN通过智能技术生成

contents,多图预警!!

pandas 数据的创建

设置

作用 代码
显示所有列 pd.set_option(‘display.max_columns’, None)
显示所有行 pd.set_option(‘display.max_rows’, None)
设置每行显示的长度 pd.set_option(‘display.width’, 200)

创建series

s = pd.Series(data, index=index)
其中 index 是一个列表,用来作为数据的标签。data 可以是不同的数据类型:Python 字典,ndarray 对象,一个标量值
note:

  1. Series 是类 ndarray 对象,就可以切片,用索引等当做np中的数组来操作操作
  2. Series 是字典对象,就可以当做字典来用s.get(‘f’)
  3. 进行标签对齐操作
    在这里插入图片描述

创建dataframe

(2维的,就有行标签和列标签,支持自动索引对齐)
f = pd.DataFrame(data, index=index, columns=columns)
其中 index 是行标签,columns 是列标签,data 可以是下面的数据:

  1. 由一维 numpy 数组,list,Series 构成的字典(list长度一定要相同,series长度可以不同,缺失会nan补上)
  2. 二维 numpy 数组
  3. 一个 Series
  4. 另外的 DataFrame 对象

note:
dateframe会从data中自动搜索索引,若先前是有索引的,则在创建时会在指定的索引中寻找对应数据(索引对齐操作),不存在会用Nan填补
具体放法1:

dates=pd.date_range('20210101',periods=6)
datas=pd.DataFrame(np.random.random((6,4)),index=dates,columns=list('ABCD'))

在这里插入图片描述
法2:

d={
   'A':0,'B':range(4),'C':pd.Timestamp('20210101')}
datas=pd.DataFrame(d)

在这里插入图片描述

Panel

Panel 是三维带标签的数组。实际上,Pandas 的名称由来就是由 Panel 演进的,即 pan(el)-da(ta)-s。Panel 比较少用,但依然是最重要的基础数据结构之一。
items: 坐标轴 0,索引对应的元素是一个 DataFrame
major_axis: 坐标轴 1, DataFrame 里的行标签
minor_axis: 坐标轴 2, DataFrame 里的列标签

Dataframe添加列

  1. df.insert(1, ‘bar’, df[‘one’])
    第一个为添加的位置,第二个是标签名,第三个是数据
    在这里插入图片描述

  2. df.assign(Ratio = df[‘A’] / df[‘B’]) #实际的df没有变,是通过复制返回了一个新的dataframe
    列名=data的操作,可以是函数,例如df.assign(AB_Ratio = lambda x: x.A / x.B)
    在这里插入图片描述

pandas索引

  1. 重新索引
    s.reindex(list(‘abcdefgh’)) #新增加的索引没有值为Nan,
    也可用s.reindex(list(‘abcdefgh’), fill_value=0) #fill_value赋予默认值,也可用参数method=‘ffill’,‘bfill’,ffill是用前面的数填充,bfill使用后面的数填充。dataframe中method只对行有效。

在这里插入图片描述
3. 给索引命名
对series:s.index.name = ‘alpha’
对dataframe:df.index.name=‘row’,df.columns.name=‘col’
在这里插入图片描述

  1. 查询索引的类
    pd.*Index?

  2. 查询是否有重复的索引: s.index.is_unique
    返回有索引唯一值的索引列表: s.index.unique()
    可用grouby来根据具体需要处理重复索引,例如s.groupby(s.index).sum() #还有.mean()等等

多层次索引

可以使数据在一个轴上有多个索引级别。即可以用二维的数据表达更高维度的数据,使数据组织方式更清晰。它使用 pd.MultiIndex 类来表示。

series的多层索引

在这里插入图片描述

dataframe的多层索引

在这里插入图片描述

dataframe多层索引的交换和排序

df2 = df.swaplevel(‘row-1’, ‘row-2’)
在这里插入图片描述
df.sortlevel(0) #括号中的数字表示对几级索引进行排序
在这里插入图片描述

按照索引级别进行统计

df.sum(level=0) #.sum表示使用的函数,level表示按照几级索引的值进行操作
在这里插入图片描述

索引与列的转换

df.set_index(‘c’) #将索引为c的这列设置层索引
在这里插入图片描述 在这里插入图片描述
df2.reset_index() #则将df的索引变为列名,索引变为默认的0,1,2…
在这里插入图片描述

pandas查询函数

df.query()

参数 说明
expr 要评估的查询字符串;
可以在环境中引用变量,在变量前面加上@字符(@a+b);
也可以通过在反引号中将空格或运算符括起来来引用它们
inplace=False 查询是应该修改数据还是返回修改后的副本

丢弃部分数据

df2 = df.drop([‘two’, ‘four’], axis=1) #返回一个丢弃[‘two’, ‘four’]两列的dataframe,axis默认是0.

函数应用

  1. apply: 这里有大佬的讲解连接:map、apply、applymap详解
    (1). 将数据按行或列进行计算,默认axis=0是按列,设置axis=1可按行
    在这里插入图片描述
    (2). GroupBy 的 apply 函数对每个分组进行计算,
    groupby(‘分组关键字’).apply(函数名,函数的参数1,函数的参数2,…)
    在这里插入图片描述
    下方示例为应用groupby,来用各分组的平均值去填充Nan
    在这里插入图片描述

  2. applymap: 将数据按元素为进行计算
    在这里插入图片描述

pandas排序

对标签

datas.sort_index(axis=1,ascending=False) #axis=1也课用‘columns’替换
在这里插入图片描述
axis=1对列标签,0对行标签,False降序,默认为True升序

对值排序和排名

datas.sort_values(by=‘A’,ascending=False)
在这里插入图片描述
对series进行排名,method='first’表示先出现的先排名,dataframe中类似,df.rank()
在这里插入图片描述

pandas数据访问的高效方式

datas.loc[:,[‘B’,‘D’]]
datas.at[pd.Timestamp(‘20210101’),‘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值