pandas基础函数(干货)

张开发
2026/4/11 14:38:40 15 分钟阅读

分享文章

pandas基础函数(干货)
目录1.数据读取/写入读取数据写入数据2.数据查看内存使用3.数据选择列选择行选择4.数据清洗处理缺失值数据类型转换重复值处理字符串处理5.数据处理添加/删除列排序重置索引6.数据统计基本统计唯一值和值计数相关性分析7.数据合并连接操作8. 分组操作GroupBy 操作数据透视表9. 时间序列时间处理常用工作流程模板数据探索模板数据清洗模板1.数据读取/写入读取数据import pandas as pd # 从CSV文件读取 df pd.read_csv(filename.csv) df pd.read_csv(filename.csv, encodingutf-8) # 指定编码 # 从Excel文件读取 df pd.read_excel(filename.xlsx, sheet_nameSheet1) # 从JSON文件读取 df pd.read_json(filename.json) # 从SQL数据库读取 import sqlite3 conn sqlite3.connect(database.db) df pd.read_sql(SELECT * FROM table_name, conn写入数据# 写入CSV文件 df.to_csv(output.csv, indexFalse) # 不保存索引 # 写入Excel文件 df.to_excel(output.xlsx, sheet_nameData, indexFalse) # 写入JSON文件 df.to_json(output.json, orientrecords)2.数据查看# 基本查看 df.head() # 前5行 df.head() # 前10行 df.tail() # 后5行 df.sample( # 随机5行 # 数据信息 df.shape # 形状 (行数, 列数) df.columns # 列名 df.index # 索引 df.dtypes # 每列数据类型 df.info() # 详细信息 # 统计信息 df.describe() # 数值列统计描述 df.describe(includeall) # 所有列统计内存使用df.memory_usage(deepTrue) # 内存使用情况3.数据选择列选择# 选择单列返回Series df[column_name] df.column_name # 仅当列名是有效的Python变量名时 # 选择多列返回DataFrame df[[col1, col2, col3]] # 选择列范围 df.loc[:, col1:col3] # 从col1到col3的所有列行选择# 按位置选择 df.iloc[0] # 第一行 df.iloc[0:5] # 前5行 df.iloc[[0, 2, 4]] # 第1,3,5行 # 按标签选择 df.loc[0] # 索引为0的行 df.loc[0:5] # 索引0到5的行 # 布尔索引条件选择 df[df[age] 30] # 年龄大于30 df[(df[age] 30) (df[city] 北京)] # 多条件 df[df[name].str.contains(张)] # 字符串包含4.数据清洗处理缺失值# 检测缺失值 df.isnull() # 布尔矩阵 df.isnull().sum() # 每列缺失值数量 df.notnull() # 非空值 # 处理缺失值 df.dropna() # 删除包含缺失值的行 df.dropna(axis1) # 删除包含缺失值的列 df.dropna(subset[col1]) # 删除指定列缺失的行 df.fillna(0) # 用0填充 df.fillna(methodffill) # 用前一个值填充 df.fillna(methodbfill) # 用后一个值填充 df.fillna(df.mean()) # 用均值填充数据类型转换# 类型转换 df[column] df[column].astype(int) # 转为整数 df[column] df[column].astype(float) # 转为浮点数 df[column] df[column].astype(str) # 转为字符串 df[column] df[column].astype(category) # 转为分类 # 更安全的转换 df[column] pd.to_numeric(df[column], errorscoerce) # 错误转为NaN重复值处理df.duplicated() # 检查重复行 df.drop_duplicates() # 删除重复行 df.drop_duplicates(subset[col1, col2]) # 基于指定列去重字符串处理# 字符串方法需先转为字符串类型 df[name].str.upper() # 转为大写 df[name].str.lower() # 转为小写 df[name].str.strip() # 去除空格 df[name].str.replace(旧, 新) # 替换 df[name].str.contains(关键词) # 包含检查 df[name].str.split( ) # 分割字符串5.数据处理添加/删除列# 添加新列 df[new_col] df[col1] df[col2] df[constant_col] 100 # 常量列 # 删除列 df.drop(column_name, axis1, inplaceTrue) # 直接修改原数据 df df.drop(column_name, axis1) # 返回新DataFrame # 重命名列 df.rename(columns{old_name: new_name}, inplaceTrue) df.columns [col1, col2, col3] # 全部重命名排序df.sort_values(column_name) # 按某列升序 df.sort_values(column_name, ascendingFalse) # 降序 df.sort_values([col1, col2]) # 多列排序重置索引df.reset_index(dropTrue, inplaceTrue) # 重置索引不保留旧索引6.数据统计基本统计df.mean() # 均值 df.median() # 中位数 df.mode() # 众数 df.std() # 标准差 df.var() # 方差 df.min() # 最小值 df.max() # 最大值 df.sum() # 求和 df.count() # 非空值计数 # 分位数 df.quantile(0.25) # 25%分位数 df.quantile(0.75) # 75%分位数唯一值和值计数df[column].unique() # 唯一值数组 df[column].nunique() # 唯一值数量 df[column].value_counts() # 值计数相关性分析df.corr() # 相关系数矩阵 df.cov() # 协方差矩阵7.数据合并连接操作# 横向合并类似SQL JOIN pd.merge(df1, df2, onkey_column) # 内连接 pd.merge(df1, df2, onkey_column, howleft) # 左连接 pd.merge(df1, df2, onkey_column, howouter) # 外连接 # 纵向合并堆叠 pd.concat([df1, df2], axis0) # 纵向合并 pd.concat([df1, df2], axis1) # 横向合并 # 追加行 df1.append(df2, ignore_indexTrue)8. 分组操作GroupBy 操作# 基本分组 grouped df.groupby(column_name) # 分组统计 grouped.size() # 每组大小 grouped.mean() # 每组均值 grouped.sum() # 每组求和 grouped.agg({col1: mean, col2: sum}) # 多列不同聚合 # 多列分组 df.groupby([col1, col2]).mean() # 应用自定义函数 df.groupby(group_col)[value_col].apply(lambda x: x.max() - x.min())数据透视表# 类似Excel数据透视表 pd.pivot_table(df, valuesvalue_col, indexrow_col, columnscol_col, aggfuncmean)9. 时间序列时间处理# 字符串转时间 df[date] pd.to_datetime(df[date_string]) # 时间索引 df.set_index(date, inplaceTrue) # 时间重采样 df.resample(D).mean() # 按天重采样 df.resample(M).sum() # 按月重采样 df.resample(Y).mean() # 按年重采样 # 时间属性提取 df[year] df[date].dt.year df[month] df[date].dt.month df[day] df[date].dt.day df[weekday] df[date].dt.weekday常用工作流程模板数据探索模板def explore_data(df): print( 数据基本信息 ) print(f形状: {df.shape}) print(f\n列名: {df.columns.tolist()}) print(f\n前5行:) print(df.head()) print(f\n数据类型:) print(df.dtypes) print(f\n缺失值统计:) print(df.isnull().sum()) print(f\n描述性统计:) print(df.describe(includeall)) explore_data(df)数据清洗模板def clean_data(df): # 处理缺失值 df df.dropna(subset[重要列]) # 删除关键列缺失的行 df df.fillna({数值列: df[数值列].mean(), 文本列: 未知}) # 数据类型转换 df[日期列] pd.to_datetime(df[日期列]) df[数值列] pd.to_numeric(df[数值列], errorscoerce) # 删除重复值 df df.drop_duplicates() return df cleaned_df clean_data(df)

更多文章