你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

Pandas操作入门

2021/12/7 18:44:04

Pandas操作入门

索引

创建&增加

方法一:

import pandas as pd
df=pd.read_excel('text.xlsx',index_col='name')
print(df)

image-20211206144157713

方法二:

import pandas as pd
df=pd.read_excel('text.xlsx')
df=df.set_index('name')
print(df)

image-20211206144350301

多层索引

import pandas as pd
df=pd.read_excel('text.xlsx')
df=df.set_index(['name','team'])
print(df)

image-20211206144605689

不删除设置的索引列、

import pandas as pd
df=pd.read_excel('text.xlsx')
df=df.set_index('name',drop=False)
print(df)

image-20211206144859531

增加索引(保留原索引)

import pandas as pd
df=pd.read_excel('text.xlsx')
df=df.set_index('name',append=True)
print(df)

image-20211206145008963

删除(还原)

默认删除所有级别索引

df=pd.read_excel('text.xlsx')
df=df.set_index('name')
print(df)
df=df.reset_index()
# 指定索引列
# df=df.reset_index(level=0)
# df=df.reset_index(level='name')
print(df)

name从索引变成了列

image-20211206150439580

注意:

如果在设置索引时 设置不删除设置的索引列 运行将会报错

提示数据已存在

import pandas as pd
df=pd.read_excel('text.xlsx')
df=df.set_index('name',drop=False)
print(df)
df=df.reset_index()
print(df)

image-20211206150639513

属性

import pandas as pd
df=pd.read_excel('text.xlsx')
# 名称
print(df.index.name)
# array数组
print(df.index.array)
# 数据类型
print(df.index.dtype)
# 元素数量
print(df.index.size)
# array数组
print(df.index.values)

image-20211206152407631

常用操作

df.index.astype('int64') # 转换类型
df.index.isin() # 检查是否存在
df.index.rename('number') # 修改索引名称
df.index.rename(['name', 'team']) # 多层,重命名索引
df.index.nunique() # 不重复值的数量
df.index.sort_values(ascending=False,) # 排序,倒序
df.index.map(lambda x:x+'_') # map函数处理
df.index.str.replace('_', '') # str替换
df.index.str.split('_') # 分隔
df.index.to_list() # 转为列表
df.index.to_frame(index=False, name='a') # 转成DataFrame
df.index.to_series() # 转为series
df.index.to_numpy() # 转为numpy
df.index.unique() # 去重
df.index.value_counts() # 去重及计数
df.index.where(df.index=='adf') # 筛选
df.index.max() # 最大值
df.index.argmax() # 最大索引值
df.index.min() # 最大值
df.index.argmin() # 最大索引值
df.index.T # 转置

重命名

import pandas as pd
df=pd.read_excel('text.xlsx')
df=df.set_index('name')
print(df)
df=df.rename_axis('index')
print(df)

image-20211206163254157

修改多层索引名

import pandas as pd
df=pd.read_excel('text.xlsx')
df=df.set_index(['name','team'])
print(df)
df=df.rename_axis(['index1','index2'])
print(df)

image-20211206163357986

修改索引内容

修改列名

import pandas as pd
df=pd.read_excel('text.xlsx')
df=df.set_index('name')
print(df)
# 一对一修改
df=df.rename(columns={'team':'0'})
print(df)
# 修改全部
df=df.set_axis(['0','1','2','3','4'],axis=1)
print(df)

image-20211206165001627

修改索引

import pandas as pd
df=pd.read_excel('text.xlsx')
df=df.set_index('name')
print(df)
# 一对一修改
df=df.rename(index={'Liver':'1'})
print(df)
# 修改全部
df=df.set_axis(list(range(0,100)),axis='index')
print(df)

image-20211206165505490

数据

样式查看

import pandas as pd
df=pd.read_excel('text.xlsx')
# 查看前面数据 默认5条
print(df.head())
# 查看后面数据 默认5条
print(df.tail())
# 随机查看数据 默认1条
print(df.sample())

image-20211206170758801

指定条数

import pandas as pd
df=pd.read_excel('text.xlsx')
print(df.head(2))
print(df.tail(2))
print(df.sample(2))

image-20211206170854642

属性

import pandas as pd
df=pd.read_excel('text.xlsx')
# 维度
print(df.shape)
# 信息
print(df.info)
# 数据类型
print(df.dtypes)

image-20211206171308252

数据统计或处理

统计表

总数、平均数、标准差、最小值、四分位数、最大值

import pandas as pd
df=pd.read_excel('text.xlsx')
print(df.describe())

image-20211206173054392

函数

df.mean() # 返回所有列的均值
df.corr() # 返回列与列之间的相关系数
df.count() # 返回每一列中的非空值的个数
df.max() # 返回每一列的最大值
df.min() # 返回每一列的最小值
df.abs() # 绝对值
df.median() # 返回每一列的中位数
df.std() # 返回每一列的标准差,贝塞尔校正的样本标准偏差
df.var() # 无偏方差
df.sem() # 平均值的标准误差
df.mode() # 众数
df.prod() # 连乘
df.mad() # 平均绝对偏差
df.cumprod() # 累积连乘,累乘
df.cumsum(axis=0) # 累积连加,累加
df.nunique() # 去重数量,不同值的量
df.idxmax() # 每列最大值的索引名
df.idxmin() # 每列最小值的索引名
df.cummax() # 累积最大值
df.cummin() # 累积最小值
df.skew() # 样本偏度(第三阶)
df.kurt() # 样本峰度(第四阶)
df.quantile() # 样本分位数(不同 % 的值)

指定单列

import pandas as pd
df=pd.read_excel('text.xlsx')
print(df)
print(df['Q1'].mean())

image-20211206173623806

指定单行

因为前两个数据是str类型 所以要使用切片

import pandas as pd
df=pd.read_excel('text.xlsx')
print(df.loc[0])
print(df.loc[0][2:].mean())

image-20211206174313423

df.round(2) # 指定字段指定保留小数位
df.nunique()# 每个列的去重值的数量
s.nunique() # 本列的去重值

差值

import pandas as pd
df=pd.Series([2,12,6,5,10])
# 当前数与前一个数的差值
print(df.diff())
# 当前数与后面第二个数的差值
print(df.diff(-2))

image-20211206181949328

DataFrame

import pandas as pd
df=pd.read_excel('text.xlsx')
print(df.loc[:5,'Q1':'Q4'])
print(df.loc[:5,'Q1':'Q4'].diff())
print(df.loc[:5,'Q1':'Q4'].diff(1,axis=1))

image-20211206182541675

位置移动

import pandas as pd
df=pd.read_excel('text.xlsx')
# 向下移动2行
print(df.shift(2))
# 向上移动2行
print(df.shift(-2))
# 向左移
print(df.shift(2,axis=1))
# 向右移
print(df.shift(-2,axis=1))

image-20211206183746169

image-20211206183759205

排名rank()

import pandas as pd
df=pd.read_excel('text.xlsx')
print(df.head())
print(df.head().rank())
print(df.head().rank(axis=1))

image-20211206184009366

数据选择

操作语法
选择列df[x]
按索引选择行df.loc[x]
按数字索引选择行df.iloc[x]
使用切片选择行df[0:x]
用表达式筛选行df[x>=0]

选择列

import pandas as pd
df=pd.read_excel('text.xlsx')
print(df['name'])

image-20211206184540897

切片选择行

import pandas as pd
df=pd.read_excel('text.xlsx')
print(df[:4])
print(df[5:10])
print(df[0::2])

image-20211206184740386

按标签取行 loc

import pandas as pd
df=pd.read_excel('text.xlsx',index_col='name')
print(df.loc['Arry'])

image-20211206184922338

使用切片 选择多个

import pandas as pd
df=pd.read_excel('text.xlsx',index_col='name')
print(df.loc['Arry':'Oah'])
print(df.loc[['Arry','Oah']])

image-20211206185131675

设置读取列

import pandas as pd
df=pd.read_excel('text.xlsx',index_col='name')
print(df.loc['Arry':'Oah',['Q1','Q2']])

image-20211206185304313

按数字索引取行 iloc

import pandas as pd
df=pd.read_excel('text.xlsx',index_col='name')
print(df.iloc[0:3])
print(df.iloc[0:10:2])
# 设置取的列
print(df.iloc[0:5,[0,1]])

image-20211206185604759

取具体值

at[] iat[] 前一个参数为索引 后一个参数为列名 iat按数字索引获取

import pandas as pd
df=pd.read_excel('text.xlsx',index_col='name')
print(df)
print(df.at['Arry','Q1'])
print(df.iat[1,1])

image-20211206190011751

get 获取某列

import pandas as pd
df=pd.read_excel('text.xlsx',index_col='name')
print(df.get('team',0))

image-20211206190408150

截取数据

注意只能是数字索引

import pandas as pd
df=pd.read_excel('text.xlsx')
print(df.truncate(before=2,after=6))

image-20211206190635536