Pandas常见代码
pandas是一个基于Python的开源数据分析库,本文介绍其常用的代码。
1.引入包
import pandas as pd
2.dataframe 初始化与加载数据
# 初始化
df = pd.DataFrame() # 空dataframe
# 最基础
data = {
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35]
}
df = pd.DataFrame(data)
# 只指定列名
df = pd.DataFrame(columns=['A', 'B'])
# 加载/保存数据
df = pd.read_csv('data.csv')
df = pd.read_excel('data.xlsx') # 可加参数指定列类型 dtype={'col1': str}
df.to_csv('data.csv', index = False) # index 是否保存行名,默认为True
df.to_excel('data.xlsx', index = False)
3.dataframe 属性
df.head(8) # 查看前10行
df.tail() # 查看后5行
df.sample(5) # 随机抽样5行
df.shape # 查看数据形状 (行数, 列数)
df.columns # 查看所有列名
df.info() # 查看数据类型、缺失值等信息
df.describe() # 快速统计汇总
4.dataframe 选择数据
df['col'] # 选择某一列
df[['col1', 'col2']] # 选择多列
# iloc表示index选择,loc表示标签名称选择
df.loc[0] # 按名称选取第0行
df.iloc[0] # 按index选取第0行
df.loc[0, 'col'] # 指定行列选择
df.iloc[0:5, 1:3] # 选择第0到4行、第1到2列
df.iloc[1, 2] # 指定数据点
df.iloc[[0, 2], [1, 2]] # 指定多个数据点
5.dataframe 过滤筛选
df[df['col'] > 10] # 条件筛选
df[(df['a'] > 5) & (df['b'] < 3)] # 多条件筛选
df[df['col'].isin([1, 2, 3])] # 筛选多个值
df[df['col'].str.contains('abc')] # 字符串匹配
6.dataframe 操作
# 给行末尾添加一行数据
df = pd.DataFrame(columns=['name', 'age'])
df.iloc[len(df)] = ['Alice', 25]
# 列操作,复杂可使用apply函数
df['new_col'] = df['a'] + df['b'] # 新增列
df.drop('col', axis=1, inplace=True) # 删除列
# 重命名行列 inplace=True 表示在本dataframe中操作
df.rename(columns={'old': 'new'}, inplace=True) # 重命名列
df.reset_index(drop=True, inplace=True) # 重置索引
# 处理缺失值
df.isnull().sum() # 查看缺失值数量
df.dropna() # 删除含缺失值的行
df.fillna(0) # 用0填充缺失值
df['col'].fillna(df['col'].mean()) # 用均值填充
# 分组与聚合
df.groupby('col').mean().reset_index() # 按列分组求均值
# 多列分组多指标聚合
df.groupby(['col1', 'col2']).agg(
new_col1 = ('col3', 'size'),
new_col2 = ('col3', 'nunique')).reset_index()
# 排序, 参数可以为list分别指定,默认升序
df.sort_values('col') # 按某列升序排序
df.sort_values('col', ascending=False) # 降序
7.dataframe 合并与拼接
# 拼接,可多个共同合并
pd.concat([df1, df2], axis=0) # 纵向行拼接
pd.concat([df1, df2], axis=1) # 横向列拼接
# 合并 left_on, right_on 表示匹配key名称,多个可以都是list how表示匹配方式 有inner,outer,left,right
pd.merge(df1, df2, left_on='col1', right_on = 'col2', how = 'left')
8.dataframe转换
# df 转 np
arr1 = df.values
arr1 = df.to_numpy() # 推荐使用,更安全
# np 转 df
df = pd.DataFrame(arr, columns=['X', 'Y'])
# 一维 list
df = pd.DataFrame(data, columns=['col1'])
# 二维 list 每个元素代表一行
data = [[1, 'Alice'], [2, 'Bob'], [3, 'Charlie']]
df = pd.DataFrame(data, columns=['id', 'name'])
# 列表字典, 每个元素是个字典
data = [
{'id': 1, 'name': 'Alice'},
{'id': 2, 'name': 'Bob'},
{'id': 3, 'name': 'Charlie'}
]
df = pd.DataFrame(data)
# 字典key和value作为两列
df = pd.DataFrame(list(d.items()), columns=['key', 'value'])
d = dict(zip(df['key'], df['value']))