这里是废话
欢迎来到数据分析的魔幻世界!如果你渴望掌握一种强大而灵活的Python数据处理工具,那么Pandas绝对是你的不二之选。Pandas是Python中最受欢迎的数据分析库之一,它为数据科学家和分析师们提供了丰富的数据操作功能,使得数据清洗、转换和分析变得轻而易举。
在本文中,我们将为你呈现99个常用的Pandas用法,涵盖数据读取、数据处理、数据可视化以及数据转换等方面的技巧。无论你是数据分析的菜鸟还是经验丰富的老鸟,这些Pandas用法都能为你的工作带来全新的启示和效率提升。让我们一起踏上这场奇妙的Pandas探险之旅吧!
Pandas的99个用法
- 导入 Pandas 库:
import pandas as pd - 创建一个 DataFrame:
df = pd.DataFrame(data) - 查看 DataFrame 的前几行:
df.head() - 查看 DataFrame 的后几行:
df.tail() - 查看 DataFrame 的基本统计信息:
df.describe() - 查看 DataFrame 的列信息:
df.columns - 查看 DataFrame 的行数和列数:
df.shape - 选择单列数据:
df['column_name'] - 选择多列数据:
df[['col1', 'col2']] - 选择特定行:
df.iloc[row_index] - 过滤行数据:
df[df['column_name'] > value] - 使用逻辑运算符过滤行数据:
df[(df['col1'] > 10) & (df['col2'] < 50)] - 排序数据:
df.sort_values(by='column_name', ascending=False) - 添加新列:
df['new_column'] = data - 删除列:
df.drop('column_name', axis=1, inplace=True) - 缺失值处理:
df.dropna(),df.fillna(value) - 分组操作:
df.groupby('column_name').aggregate_function() - DataFrame 的合并:
pd.concat([df1, df2]) - DataFrame 的合并(按指定列):
pd.merge(df1, df2, on='common_column') - 重命名列名:
df.rename(columns={'old_name': 'new_name'}, inplace=True) - 将列数据类型转换为其他类型:
df['column_name'] = df['column_name'].astype(new_type) - 使用 apply 函数:
df['new_column'] = df['column_name'].apply(function) - 使用 lambda 函数:
df['new_column'] = df['column_name'].apply(lambda x: x * 2) - 将字符串列拆分为多列:
df['new_column'] = df['column_name'].str.split(' ', expand=True) - 将列转换为日期时间类型:
df['date_column'] = pd.to_datetime(df['date_column']) - 设置索引列:
df.set_index('column_name', inplace=True) - 重置索引:
df.reset_index(inplace=True) - 数据的透视表:
pd.pivot_table(df, values='value_column', index='index_column', columns='column_name') - 使用条件逻辑创建新列:
df['new_column'] = np.where(condition, value_if_true, value_if_false) - 检查重复行:
df.duplicated() - 删除重复行:
df.drop_duplicates(inplace=True) - 查找缺失值:
df.isnull() - 拼接字符串列:
df['new_column'] = df['col1'] + ' ' + df['col2'] - 统计每列的唯一值:
df['column_name'].value_counts() - 使用 applymap 函数:
df = df.applymap(function) - 使用 map 函数:
df['new_column'] = df['column_name'].map(mapping_dict) - 替换值:
df.replace(old_value, new_value, inplace=True) - 计算累计和:
df['cumulative_sum'] = df['column_name'].cumsum() - 数据填充:
df['column_name'].fillna(method='ffill', inplace=True) - 绘制柱状图:
df['column_name'].plot(kind='bar') - 绘制折线图:
df['column_name'].plot(kind='line') - 绘制散点图:
df.plot(x='col1', y='col2', kind='scatter') - 绘制箱线图:
df.boxplot(column='column_name') - 绘制直方图:
df['column_name'].hist() - 绘制核密度图:
df['column_name'].plot(kind='kde') - DataFrame 的转置:
df.T - 使用 loc 进行标签定位:
df.loc[row_label, column_label] - 使用 iloc 进行位置定位:
df.iloc[row_index, col_index] - 将 DataFrame 导出为 CSV 文件:
df.to_csv('file.csv', index=False) - 将 DataFrame 导出为 Excel 文件:
df.to_excel('file.xlsx', index=False) - 读取 CSV 文件:
pd.read_csv('file.csv') - 读取 Excel 文件:
pd.read_excel('file.xlsx') - 分位数计算:
df['column_name'].quantile(q=0.25) - 使用 pd.cut 对数据进行分箱:
df['bin'] = pd.cut(df['column_name'], bins=3) - 删除行:
df.drop(index=row_index, inplace=True) - 设置数据类型并跳过错误:
pd.to_numeric(df['column_name'], errors='coerce') - 将列数据转换为分类类型:
df['column_name'] = df['column_name'].astype('category') - 数据采样:
df.sample(n=5) - 使用 groupby 和 agg 进行多列汇总:
df.groupby('column_name').agg({'col1': 'sum', 'col2': 'mean'}) - 使用 cut 和 qcut 划分数据:
pd.cut(df['column_name'], bins=[0, 25, 50, 75, 100]),pd.qcut(df['column_name'], q=4) - 交换列的位置:
df[['col2', 'col1', 'col3']] - 将 DataFrame 转换为列表:
df.values.tolist() - 使用 pd.get_dummies 进行独热编码:
pd.get_dummies(df['column_name']) - 多索引 DataFrame 的创建:
df = pd.DataFrame(data, index=[['A', 'A', 'B', 'B'], [1, 2, 1, 2]]) - 多索引 DataFrame 的选择:
df.loc['A'],df.loc['A', 1] - 使用 diff 计算一阶差分:
df['column_name'].diff() - 使用 shift 计算数据平移:
df['column_name'].shift(1) - 判断元素是否在列表中:
df['column_name'].isin([val1, val2]) - 使用 eval 计算表达式:
df.eval('new_column = col1 + col2', inplace=True) - 使用 memory_usage 查看 DataFrame 内存占用:
df.memory_usage(deep=True) - 通过字典创建 DataFrame:
data = {'col1': [val1, val2], 'col2': [val3, val4]},df = pd.DataFrame(data) - 使用 isin 进行过滤:
df[df['column_name'].isin([val1, val2])] - 重置索引并删除旧索引:
df.reset_index(drop=True, inplace=True) - 将字符串转换为小写/大写:
df['column_name'].str.lower(),df['column_name'].str.upper() - 将列数据转换为数值类型(带千位分隔符):
df['column_name'] = df['column_name'].str.replace(',', '').astype(int) - 使用 to_dict 将 DataFrame 转换为字典:
df.to_dict() - 使用 value_counts 统计多列的唯一组合:
df.groupby(['col1', 'col2']).size() - 使用 filter 过滤列:
df.filter(like='substring') - 使用 idxmax 和 idxmin 找到最大/最小值所在的索引:
df['column_name'].idxmax(),df['column_name'].idxmin() - 使用 merge_asof 进行最近匹配合并:
pd.merge_asof(df1, df2, on='column_name', direction='nearest') - 使用 rank 给数据排名:
df['column_name'].rank() - 使用 iterrows 迭代 DataFrame 的行:
for index, row in df.iterrows(): - 使用 nlargest 和 nsmallest 找到前 N 大/小的值:
df['column_name'].nlargest(5),df['column_name'].nsmallest(5) - 使用 cut 将连续变量划分为离散区间:
df['bin'] = pd.cut(df['column_name'], bins=5, labels=['Very Low', 'Low', 'Medium', 'High', 'Very High']) - 使用 mask 替换满足条件的值:
df['column_name'] = df['column_name'].mask(df['column_name'] < 0, 0) - 使用 explode 拆分包含列表的列:
df['column_name'].explode() - 使用 pop 删除并返回列:
new_column = df.pop('column_name') - 将 DataFrame 保存为 HDF5 文件:
df.to_hdf('data.h5', key='df_key') - 将 DataFrame 保存为 SQL 数据库表:
df.to_sql('table_name', con=engine, if_exists='append') - 使用 replace 替换字符串:
df['column_name'].replace('old_str', 'new_str', inplace=True) - 使用 eval 进行条件表达式计算:
df.eval('new_column = (col1 + col2) if col1 > 10 else (col1 - col2)', inplace=True) - 使用 at 和 iat 访问单个元素:
df.at[row_label, col_label],df.iat[row_index, col_index] - 使用 merge 和 suffixes 处理列名冲突:
pd.merge(df1, df2, on='common_column', suffixes=('_left', '_right')) - 使用 style 自定义 DataFrame 的样式:
df.style.format({'column_name': "{:.2f}"}) - 使用 pivot_table 创建多级数据透视表:
pd.pivot_table(df, values='value_column', index=['index_col1', 'index_col2'], columns='column_name') - 使用 to_clipboard 将 DataFrame 复制到剪贴板:
df.to_clipboard() - 使用 slice 函数获取部分数据:
df.slice(start='2023-01-01', end='2023-12-31') - 使用 clip 截取数据范围:
df['column_name'].clip(lower=min_value, upper=max_value, inplace=True) - 使用 memory_usage 查看 DataFrame 列内存使用情况:
df.memory_usage(deep=True)
这里是结束语
恭喜你完成了这场Pandas探险之旅!希望在这99个神奇的Pandas用法中,你找到了对解决实际数据问题的新思路和灵感。Pandas的强大功能使得数据分析变得轻松愉悦,而你所学到的技巧将在未来的数据冒险中助你一臂之力。
在掌握Pandas的路上,不断实践和挑战是必不可少的。通过不断运用这些技巧,你将更加熟练地驾驭数据,并能从海量信息中提取有价值的见解。无论是商业决策、科学研究还是社会分析,Pandas都将成为你最忠实的助手。
愿你在数据领域的航程中越走越远,发现更多未知的数据宝藏。期待在未来与你再度相会,探讨更多关于数据分析的精彩内容。祝你在数据之海中驶向更广阔的未来,成为真正的数据分析大师!