30 个针对初学者的 Pandas 快速提示和技巧

对于希望提高使用 Pandas 进行 Python 数据操作和分析的熟练程度的人来说,阅读本文是必不可少的。无论您是初学者还是经验丰富的数据实践者,本教程都能为您提供丰富的见解和技巧,帮助您简化工作流程,最大限度地提高工作效率。通过掌握本文概述的 30 个技巧和窍门,您将获得读取和导出数据、修改数据集、执行分析和可视化结果的宝贵技能。文章对每个技巧都进行了简明扼要的解释,让你轻松理解并实施基本概念和高级策略。通过在本文中投入时间,您将获得在数据项目中取得优异成绩所需的知识和信心,并推动您的职业发展。

在这里插入图片描述

以下是使用 pandas 的 30 个 Python 提示和技巧:

1.从CSV读取数据

通过使用 pandas 函数 pd.read_csv(),Python 用户可以将 CSV 文件中的数据读入 DataFrame,从而轻松地操作和分析数据。它能处理不完整或扭曲的数据,并自动识别分隔符。

将 CSV 文件中的数据读取到 DataFrame 中:

import pandas as pd
df = pd.read_csv('data.csv')

此代码片段允许使用 pandas 功能进行数据分析和操作,方法是导入 pandas 库并将数据从名为“data.csv”的 CSV 文件读取到名为“df”的 pandas DataFrame 中。

2. 显示数据框

代码 df.head() 打印 DataFrame 的前几行。pandas 中的 head() 函数默认返回 DataFrame 的前 n 行,如果没有传递参数,则返回 5 行。

显示 DataFrame 的前几行:

print(df.head())

由于没有传递参数,这段代码将返回前五行。

3. 选择列

从 DataFrame 中选择特定列:

selected_columns = df[['column1', 'column2']]

通过从原始 DataFrame df 中提取指定列 "column1 "和 “column2”,该代码创建了一个名为 selected_columns 的新 DataFrame,从而可以在不更改原始 DataFrame 的情况下对这些特定列进行集中分析或操作。

4. 过滤行

根据条件过滤行:

filtered_data = df[df['column'] > 0]

代码过滤 DataFrame df 中列 "column "中的值大于 0 的记录。它从 DataFrame df 中选择列 "column "中的值大于 0 的记录,并将它们赋值给 filtered_data。

5. 分组和聚合

Pandas 中的 groupby 会根据指定的列或条件将数据组织成组。agg 会对每个组应用聚合函数(如 mean 或 sum),生成每个组的汇总统计量。

按列分组并执行聚合:

grouped_data = df.groupby('column').agg({'column2': 'mean'})

这段代码按 “column” 中的唯一值汇总 DataFrame “df” 中的数据,然后计算每个组的 “column2” 的平均值。结果存储在名为 “grouped_data” 的新 DataFrame 中。

6. 对数据框进行排序

Pandas 中的 sort_values() 函数根据数据帧 "df "的值进行排列,默认为升序,无需指定特定列。该函数有助于根据所有列的值对行重新排序。

按一列或多列对 DataFrame 进行排序:

sorted_df = df.sort_values(by='column', ascending=False)

这段代码将根据 “column” 中的值以降序排列 DataFrame “df”,从而创建一个名为 "sorted_df " 的新 DataFrame。

7. 处理缺失值

dropna() 函数从 DataFrame ‘df’ 中删除包含缺失值 (NaN) 的行,从而有效减小其大小。相反, fillna(value) 用指定的“值”填充“df”中的缺失值,提供了一种处理或估算缺失数据的方法。

处理 DataFrame 中的缺失值:

df.dropna()  # Drop rows with missing values
df.fillna(value)  # Fill missing values with a specific value

8. 按行应用函数

Pandas 中的 apply() 函数沿 DataFrame ‘df’ 的行 (axis=0) 或列 (axis=1) 应用函数。它允许使用自定义或内置函数对 DataFrame 元素进行灵活的操作。

将函数按行应用于 DataFrame:

df['new_column'] = df.apply(lambda row: row['column1'] + row['column2'], axis=1)

此代码在 DataFrame ‘df’ 中创建一个新列 ‘new_column’。通过逐行应用 lambda 函数,它将每行的“column1”和“column2”中的值相加,以确定该列中的值。

9. 重命名列

Pandas 中的 rename() 函数允许修改 DataFrame 的列或索引标签。它需要一个字典,其中键代表旧的列名称/索引标签,值代表新名称,从而允许直接重命名。

重命名 DataFrame 中的列:

df.rename(columns={'old_column': 'new_column'}, inplace=True)

此代码将 DataFrame ‘df’ 中的 ‘old_column’ 列重命名为 ‘new_column’。当inplace=True 时,'df’立即收到修改;没有创建新的 DataFrame。

10. 连接数据帧

Pandas 的 pd.concat() 函数通过将 DataFrame 沿行 (axis=0) 或列 (axis=1) 连接成单个 DataFrame。它提供了一种适应性强的方法,用于垂直或水平组合多个来源的数据。

连接多个 DataFrame:

concatenated_df = pd.concat([df1, df2], axis=0)

此代码沿行 (axis=0) 连接 DataFrame ‘df1’ 和 ‘df2’,创建一个名为 ‘concatenated_df’ 的新 DataFrame,将 ‘df2’ 堆叠在 ‘df1’ 下面。它垂直合并两个 DataFrame 的行。

11. 合并数据框

Pandas 的 pd.merge() 函数通过将 DataFrame 沿行 (axis=0) 或列 (axis=1) 连接成单个 DataFrame。它提供了一种垂直或水平组合多个来源的数据的方法。

将两个 DataFrame 合并到一个公共列上:

merged_df = pd.merge(df1, df2, on='common_column', how='inner')

此代码通过沿行 (axis=0) 连接 DataFrame“df1”和“df2”并将“df2”的行堆叠在“df1”下方,创建一个名为“concatenated_df”的新 DataFrame。

12. 数据透视表

Pandas 中的 hub_table() 函数重塑 DataFrame 以根据提供的列创建数据透视表。您可以使用一列作为新索引,使用另一列创建其他列,使用第三列为数据透视表的单元格值提供值。它可以通过使用不同的函数来聚合重复条目。

从 DataFrame 创建数据透视表:

pivot_table = df.pivot_table(index='index_column', columns='column', values='value_column', aggfunc='mean')

使用“index_column”作为行,“column”作为列,“value_column”作为要聚合的数据,此代码从 DataFrame“df”构建数据透视表。为了合并重复的条目,使用了“mean”函数。

13. 日期和时间操作

为了操作和分析 DataFrame 中的日期和时间,Pandas 的 pd.to_datetime() 函数将输入转换为日期时间对象。它可以解析多种不同的日期格式并返回 DatetimeIndex 或 datetime 对象。

将字符串转换为日期时间格式并提取日期/时间组件:

df['datetime_column'] = pd.to_datetime(df['datetime_column'])
df['year'] = df['datetime_column'].dt.year

此代码使用 pd.to_datetime() 将 DataFrame ‘df’ 中的 ‘datetime_column’ 转换为日期时间格式。然后,它从日期时间值中提取年份,并使用 dt.year 访问器将它们分配给名为“year”的新列。

14. 时间序列数据重新采样

DataFrame 中的时间序列数据可以使用 Pandas 的 resample() 方法更改其频率。当使用 sum、mean 等聚合函数时,它可以上采样(增加频率)、下采样(降低频率)或保持相同的频率。

将时间序列数据重新采样到不同的频率:

resampled_df = df.resample('D').sum()

此代码以每日频率(“D”)对原始 DataFrame“df”进行重新采样,以构建一个名为“resampled_df”的新 DataFrame。然后将每天的值相加起来。

15. 按元素应用函数

将函数按元素应用于 DataFrame:

df['new_column'] = df['column'].apply(lambda x: func(x))

通过使用 apply() 函数和 lambda 表达式将函数“func”应用于“column”中的每个元素,此代码会在 DataFrame“df”中生成一个名为“new_column”的新列。

16. 将分类转换为数字

使用 pd.get_dummies() 函数将 Pandas 中的分类变量转换为虚拟变量或指示变量。为了表示原始分类列中的每个类别,它构造了一个新的 DataFrame,并根据每个类别是否存在或不存在为每个类别分配 1 或 0。

使用 one-hot 编码将分类变量转换为数值:

encoded_df = pd.get_dummies(df, columns=['categorical_column'])

DataFrame ‘df’ 的 ‘categorical_column’ 中的每个类别都由此代码创建的新 DataFrame ‘encoded_df’ 中的虚拟变量表示。它将数值数据转换为适合使用分类变量的机器学习模型的格式。

17. 滚动窗口操作

Pandas 中的rolling() 函数创建一个滚动窗口对象,允许在沿系列或DataFrame 轴的指定窗口大小上应用平均值、总和等函数。它有助于计算时间序列或顺序数据分析的滚动统计数据。

对 DataFrame 执行滚动窗口计算:

rolling_mean = df['column'].rolling(window=3).mean()

此代码使用窗口大小 3 计算 DataFrame“df”中“列”的滚动平均值。它计算连续元素的每个窗口的平均值,提供数据的平滑表示。

18. 字符串操作

对 DataFrame 列执行字符串操作:

df['new_column'] = df['column'].str.upper()

DataFrame“df”获得一个名为“new_column”的新列,每个值都是“column”中相应值的大写等效值。它使用 Pandas 的 str.upper() 方法将字符串转换为大写。

19. 删除重复项

从 DataFrame 中删除重复行:

unique_df = df.drop_duplicates()

此代码在 DataFrame ‘df’ 中删除了重复的行,并赋值给信的变量 unique_df

20. 取样

Pandas 的 Sample() 函数通过从 DataFrame ‘df’ 中随机选择预定数量的行(默认为 1 行)来提供数据的随机样本。它有助于调查或检查数据集的一部分。

从 DataFrame 中随机采样行:

sampled_df = df.sample(n=100)

此代码通过从 DataFrame ‘df’ 中随机采样 100 行来创建一个新的 DataFrame ‘sampled_df’。它提供原始数据的子集以供分析或处理。

21. 插入缺失值

Pandas 的 interpolate() 函数使用样条、多项式和线性插值技术来填充 DataFrame ‘df’ 中的缺失值。它通过根据附近数据点的值估计缺失值来帮助平滑数据。

在 DataFrame 中插入缺失值:

df.interpolate(method='linear', inplace=True)

在 DataFrame“df”中,此代码通过线性插值将缺失值替换为基于附近数据点的插值。当 inplace=True 时,“df”直接接收更改,无需创建新的 DataFrame。

22.应用自定义聚合

可以使用 Pandas 中的 groupby() 函数根据一列或多列中的唯一值对 DataFrame 行进行分组。它生成一个 GroupBy 对象,该对象可应用于分组数据以执行多种操作,例如过滤、转换和聚合。

在 groupby 中应用自定义聚合函数:

custom_agg = df.groupby('column').agg(custom_func)

‘custom_func’ 是一个自定义聚合函数,根据 ‘column’ 中的唯一值应用于每组 DataFrame ‘df’。 “custom_agg” DataFrame 是通过根据提供的自定义逻辑聚合数据来创建的。

23. 转换数据类型

要将 DataFrame 列的数据类型转换为 Pandas 中所需的类型,请使用 astype() 方法。列的值被转换为指定的数据类型,保证附加操作或分析的一致性和适用性。

转换DataFrame列的数据类型:

df['column'] = df['column'].astype('float')

为了确保数值以浮点格式表示以进行算术运算,此代码使用 astype() 方法将 DataFrame ‘df’ 中的 ‘column’ 的数据类型转换为 float。

24. 排名

Pandas 中的rank() 函数将排名分配给Series 或DataFrame 列中的值。默认情况下,它按升序排列值。您可以指定 ascending=False 以降序排列它们。

对 DataFrame 中的行进行排名:

df['rank'] = df['column'].rank(ascending=False)

此代码计算 DataFrame ‘df’ 的 ‘column’ 中值的排名,并根据按降序排序时的位置为每个值分配排名。排名存储在名为“rank”的新列中。

25.交叉制表

Pandas 的 pd.crosstab() 函数根据包含两个或多个因素或变量的 DataFrame 计算交叉表。通过统计每个因子值组合的出现频率,它提供了有关变量之间相关性的有价值的信息。

创建两个或多个因素的交叉表:

cross_tab = pd.crosstab(df['factor1'], df['factor2'])

通过从数据帧“df”生成交叉表或列联表,此代码说明了因子“factor1”和“factor2”的因子水平的每种可能组合的出现频率。结果保存在一个名为“cross_tab”的全新数据框架中。

26. 将 DataFrame 转换为 Numpy 数组

使用 Pandas 的 to_numpy() 方法将 DataFrame ‘df’ 中的数据转换为 NumPy 数组。这使得与其他库的集成变得简单,并使数值计算更加有效。

将 DataFrame 转换为 Numpy 数组:

np_array = df.to_numpy()

这段代码将 DataFrame ‘df’ 转换为 NumPy 数组 ‘np_array’,在保持底层数据结构的同时,允许兼容基于 NumPy 的操作和库。

27. 日期时间索引

要将某个列设置为 DataFrame 的索引,请使用 Pandas 的 set_index() 函数。为了便于索引和对齐操作,它修改 DataFrame 的索引标签以对应于所选列中的值。

设置datetime列作为时间序列分析的索引:

df.set_index('datetime_column', inplace=True)

通过将“datetime_column”设置为 DataFrame“df”索引,此代码实质上修改了索引标签以反映该列中的值。当inplace=True时,'df’立即收到修改;没有创建新的 DataFrame。

28. 内存使用

Pandas 的 memory_usage() 函数确定 DataFrame ‘df’ 中每列使用了多少内存。它通过返回一个系列(其中每列的内存使用情况以字节表示)来提供有关 DataFrame 内存占用的信息。

检查DataFrame的内存使用情况:

memory_usage = df.memory_usage(deep=True)

此代码计算 DataFrame ‘df’ 的内存使用情况,说明数据和索引值消耗的内存,对于分析大型数据集的内存使用情况特别有用。 deep=True 参数通过考虑对象数据类型和字符串的内存使用情况来确保准确测量。

29. 删除列

Pandas 的 drop() 函数根据提供的标签(列名称或索引值)从 DataFrame 中删除行或列。它可以消除不必要的行和列,从而实现灵活的数据处理。

从 DataFrame 中删除列:

df.drop(columns=['column1', 'column2'], inplace=True)

此代码从 DataFrame ‘df’ 中删除 ‘Column1’ 和 ‘Column2’。当inplace=True时,'df’立即收到修改;没有创建新的 DataFrame。

30. 将数据导出到 CSV

Pandas 中的方法to_csv()将 DataFrame ‘df’ 写入 CSV(逗号分隔值)文件。它允许将 DataFrame 数据导出为 CSV 文件格式,以便在其他应用程序中进行存储、共享或进一步分析。

将 DataFrame 导出到 CSV 文件:

df.to_csv('output.csv', index=False)

此代码将 DataFrame ‘df’ 保存到名为 ‘output.csv’ 的 CSV 文件中,而不将索引值包含为单独的列。将数据写入 CSV 文件使其可用于存储或与其他应用程序共享。

熟练掌握 Pandas 可为您提供大量 Python 数据操作、分析和可视化选项。通过在工作流程中实施这 30 个简短的提示和技巧,您可以加快数据处理速度,从数据集中提取更多有洞察力的信息,并提高 Pandas 数据操作的熟练程度。无论是从多个来源读取数据、转换和清理数据,还是进行复杂的分析,Pandas 都能为您提供有效管理数据工作所需的工具。只要不断尝试、研究和学习,就能不断磨练 Pandas 技能,在数据项目中取得成功。

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茶桁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值