Pandas

wang 发布于 2024-11-11 3871 次阅读


平台搭建和维护--->收集数据--->数据清理--->存储数据--->查询计算分析--->出图出报表

查询Pandas conda命令

conda list pandas  #查询pandas当前版本
pip list | findstr pandas  #查询是否有pandas包

Pandas结构图

Series对象

series对象的创建

列表 + 默认索引

s1 = pd.Series([1,2,3,4])

列表 + 自定义索引

s2 = pd.Series([1,2,3,4],index=['a','b','c','d'])

元组方式

s3 = pd.Series(('a','b','c','d'),index=[1,2,3,4])

字典方式

s4 = pd.Series({'a':1,'b':2,'c':3})

numpyde NdArray 转换成Series对象

s5 = pd.Series(np.arange(1,6))

DataFrame对象

DataFrame对象的创建

常用属性

df.index 索引
df.columns 列名
df.values 数据
de.shape 形状
df.shape[0] 行形状
df.shape[1] 列形状
df.size 元素的个数
df.T 转置
df.age

方法

head()
tail()
describe(描述信息)#均值 std标准差 最大值 最小值
info 有几列 都是什么列 每列的元素类型

df.set_indexdf.reset_index

df.set_index:将列变为索引(提升到行索引)
数据维度:从 DataFrame → 仍是 DataFrame
效果:减少一列,该列变成索引
df.reset_index:将索引变为列(降级为普通列)
数据维度:从 DataFrame → 仍是 DataFrame
效果:增加一列,索引变成普通列
数据在"索引"和"列"之间的升降级转换。
-----------------------------------------------------
drop 参数:
默认:False
含义:是否丢弃索引(reset_index时)或原索引(set_index时)
inplace 参数:
默认:False
含义:是否原地修改(True=修改原对象,False=返回新对象
 -----------------------------------------------------
df.set_index(['列名1','列名2'],inplace=False,drop=False)
df.reset_index(['列名1','列名2'],inplace=True,drop=True)

DataFrame获取功能

loc(左右都包)

df.loc['行','列名']
df.loc['行':,'列名']
df.loc['行1':'行2','列名1':'列名2']
df.loc['行1','行2'],['列名1','列名2','列名2']
df.loc[:,['列名1','列名2']]

iloc(包左 不包右)

df.iloc[行索引,列索引]
df.iloc[:,:3]
df.iloc[:,[0,1,2]]
df.iloc[[0,1,2],range(5)]
df.iloc[::2,::3]

DataFrame 排序

sort_values

按照内容进行排序

sort_values('列名') 默认升序
sort_values('列名',ascending=False)
sort_values(['列名1','列名2'],ascending=[False,True]) 列1升序 列2降序

sort_index

按照索引进行排序

df.sort_index() 升序
df.sort_index(ascending=False) 降序

DataFrame 运算

加减

df['列名'] += 1
df['列名'] -= 1
----
df['列名'].add(1) #+1
df['列名'].sub(1) #-1

逻辑运算

df['列名'] > 条件()
> < = ...


df[  (df['列名'] > 条件)   &   (df['列名'] < 条件)  ]
& |

query用法(通用)

query(表达式)

df.query('列名 > 条件 and 列名 < 条件')
or
df.query('列名 > 条件 & 列名 < 条件')
|

isin用法

df[df['open'].isin([23.1,23.2]) ] 获取open值为23.1与23.2的行数据

统计计算

count统计空的个数
sum求和默认axis=0列求和 axis=1行求和
mean平均值
median中位数
min最小值
max最大值
mode频率最高
prod乘积
std标准差
var方差
idxmax最大索引
idxmin最小索引
abs绝对值

缺失值处理

df.replace('?', np.nan, inplace=True) #将?的非法值 转为空
df.dropna(axis='rows') 按行删除缺失值
df['列名'].fillna(df['同列名'].mean())#使用均值填充

数据合并

concat() 可以水平/垂直合并
垂直:列名相同
pd.concat([df_one ,df_two....],axis=0)

df.merge()
pd.merge(df_one,df_two,on="left",how="inner")
pd.concat([df1, df2], axis='columns')    

分组统计(*)

df.groupby(['字段1','字段2'...],as_index=False).agg({'要操作的列名':'聚合函数','要操作的列':'聚合函数'...})

as_index=False 不用字段作为索引

df.groupby(['字段1','字段2'...])[['操作列名']].聚合函数 #两个[] 表示 返回dataframe对象

去重

df.drop_duplicates()
df.unique()

一名热爱海贼的AI开发者
最后更新于 2025-12-13