page contents

Python教程-Python 数据分析库 Pandas 的 14 个实用技巧

Pandas 是一个开源 Python 库,旨在让复杂的数据分析任务变得容易和高效。通过它,您可以用基本工具难以实现或无法实现的方式对数据进行结构化、分析和可视化。无论您是重塑数据集、填补缺失值还是执行统计分析,Pandas 都能提供大量功能,改变您的数据探索过程。

attachments-2024-09-7gbTsvLh66e4e7953b0e8.jpg我使用 Python已经快 3 年了,吸引我的一点是它的健壮性。我将与大家分享一些我日常使用的 Pandas 脚本,它们可以提高性能。想象一下,你的任务是理解一个海量数据集--数百万行的金融交易、患者记录或社交媒体互动。您将如何处理?是使用传统的电子表格,还是需要更强大、更灵活、更直观的工具?

Pandas 是一个开源 Python 库,旨在让复杂的数据分析任务变得容易和高效。通过它,您可以用基本工具难以实现或无法实现的方式对数据进行结构化、分析和可视化。无论您是重塑数据集、填补缺失值还是执行统计分析,Pandas 都能提供大量功能,改变您的数据探索过程。

是什么让 Pandas 与众不同?不仅仅是速度或易用性,而是它鼓励你思考数据的方式。Pandas 将数据帧和序列等抽象概念转化为有形的、可操作的对象,让你专注于提出正确的问题,而不是陷入数据处理的机制之中。这是一个既注重发现又注重执行的库。

有了 Pandas,您不仅可以处理数据,还可以提取见解、进行预测,甚至对数据本身提出质疑。噪音中隐藏着什么模式?如何重塑数据以发现新的视角?有了 Pandas,这些问题不仅可以探索,而且可以愉快地回答。

以下是 14 种 Pandas 技巧及其使用案例:

#FIRST IMPORT PANDAS AND LOAD YOUR DATA import pandas as pddf=pd.read_csv("YOUR FILE PATH")1.按数据类型选择列

此功能允许您根据数据类型(如整数 (int64)、浮点数 (float64) 或字符串 (object))从 DataFrame 中过滤和选择列。当您只想对数字列应用特定操作或排除分类数据时,该功能尤其有用。使用案例:如果您正在进行统计分析,需要只分离出数字列,或者如果您正在为需要数字输入的机器学习模型准备数据,这种方法可以快速缩小相关列的范围。

df.select_dtypes(include=['float64', 'int64'])

2.利用查询进行条件筛选

查询方法为根据条件过滤 DataFrame 中的行提供了一种更易读、更简洁的方法。与传统的布尔索引不同,query 允许以字符串格式编写条件,其中可以包含逻辑运算符和列名,从而使代码更加直观。用例:当需要根据多个条件过滤数据时,例如选择年龄大于 25 岁且城市为 "上海 "的行时,该功能非常有用。它简化了复杂的过滤操作,提高了代码的可读性。

df.query('age > 25 & city == "Shanghai"')

3.使用管道进行连锁操作

管道方法允许您以链式方式对 DataFrame 应用一个函数或一系列函数。在执行多重转换时,这对于保持代码库的整洁和可读性特别有用。您无需将每个步骤分解为单独的代码行,而是可以将它们串联起来,从而提高可读性和流程。使用案例:在对数据进行规范化处理、清理列或按特定顺序应用多种转换时,管道有助于保持操作顺序的清晰性和可维护性。

def normalize(df):    return (df - df.mean()) / df.std()df.pipe(normalize)

4.列表式列爆破

explode 函数接收包含列表的列,并将列表中的每个元素扩展为单独的行,同时相应地对齐 DataFrame 的其余部分。当列中有嵌套数据,需要进行更细粒度的分析时,这种方法非常有用。用例:假设您有一个 DataFrame,其中一列包含与每条记录相关的标签或类别列表。通过展开这一列,您可以为每个标签或类别创建一行,这样就可以更方便地分别对它们进行计数、分组或分析。

df.explode('column_with_lists')

5.使用 applymap 进行元素运算

applymap 方法允许您对 DataFrame 的每个元素应用一个函数。当您需要在整个 DataFrame 中执行按元素排列的操作(如格式化、类型转换或自定义计算)时,这种方法非常有用。用例:如果需要计算 DataFrame 中每个字符串的长度,或对每个元素应用特定转换,applymap 可让您高效地完成这项工作。例如,将所有元素转换为字符串长度或格式化数字。

df.applymap(lambda x: len(str(x)) if isinstance(x, str) else x)

6.使用赋值创建新列

赋值方法是一种功能强大的工具,用于在 DataFrame 中根据现有列创建新列。它允许您一次添加一列或多列,同时保留原始 DataFrame。新列可以是对现有列进行运算的结果,如算术或字符串连接。使用案例:如果您需要计算新的指标,例如通过价格和数量列相乘来计算总成本,assign 提供了一种简洁高效的方法,可将这一新信息添加到 DataFrame 中。

df.assign(total_cost=lambda x: x['price'] * x['quantity'])

7.使用剪切对数据进行分类

切分功能用于将数据值分割和分类为不同的箱或区间。当您想将连续变量划分为离散区间(如年龄组、收入等级或分数范围)时,这个功能尤其有用。使用案例:假设您有一个年龄数据集,并希望将个人分为 "青少年"、"青年"、"成年 "和 "老年 "等年龄组。

df['age_group'] = pd.cut(df['age'], bins=[0, 18, 35, 60, 100], labels=['Teen', 'Young Adult', 'Adult', 'Senior'])

8.利用 astype 优化内存

使用 astype 方法可以更改 DataFrame 中列的数据类型。通过将列转换为更有效的类型(如将整数转换为 int32 或将分类转换为类别类型),可以优化内存使用。使用案例:如果您正在处理一个大型数据集,并需要减少其内存占用,将分类数据转换为类别类型或将大整数转换为较小的整数类型可以节省大量内存。

df['category_column'] = df['category_column'].astype('category')

9.向前和向后填补缺失数据

前向填充(ffill)和后向填充(bfill)是用来向前传播上一个有效观测值或向后传播下一个有效观测值以填充缺失值的方法。这些方法在处理需要根据周围数据点填补缺失值的时间序列数据或数据集时非常有用。用例:在时间序列数据中,如果序列中存在缺失值,而你又想用最后一个已知值来填补(例如,结转最后一个股票价格),ffill 和 bfill 提供了一个简单有效的解决方案。

df.ffill()  # Forward filldf.bfill()  # Backward fill

10.使用多索引

Pandas 中的多重索引(MultiIndexing)允许您对行和列使用多级索引,从而实现更复杂的数据结构。这对于需要组织和访问不同粒度数据的分层数据尤其有用。使用案例:如果您要处理的数据有多层分类,比如按地区和产品分类的销售数据,那么使用多重索引就能以强大的方式对数据进行切分。

df.set_index(['col1', 'col2'], inplace=True)df.loc[('value1', 'value2')]11.使用 groupby 和 agg 聚合数据

groupby 函数按一列或多列对数据进行分组,然后允许你应用聚合函数,如求和、求均值或自定义函数。agg 方法允许同时对不同列应用多个聚合函数,从而提供了灵活性。使用案例:当您需要计算数据中不同组别的汇总统计数据时,例如查找每个产品类别的平均价格和总销售数量,groupbyand agg 提供了一种结构化的高效方法。

df.groupby('category').agg({'price': ['mean', 'sum'], 'quantity': 'sum'})

12.用熔体重塑数据

melt 函数将 DataFrame 从宽格式转换为长格式。当您有多列表示类似的数据点,并希望将它们压缩成一列并包含相应的值时,该函数尤其有用。使用案例:假设您有分布在多列中的不同产品的月度销售数据,可以使用 melt 将这些列转换为单一的 "月 "列,从而使 DataFrame 更长,更易于分析。

pd.melt(df, id_vars=['id'], value_vars=['A', 'B'], var_name='variable', value_name='value')13.透视数据框

透视功能通过将一列中的唯一值转换为新列来重塑数据,并将另一列的值填充到新表中。这基本上与融化相反,对于汇总和重组数据非常有用。用例:如果您的数据格式较长,例如不同产品和日期的销售数字,而且您想创建一个表格,其中每个产品都有自己的列,每一行代表一个日期,那么透视功能就是您的最佳选择。

df.pivot(index='date', columns='product', values='sales')

14.使用样本进行随机抽样

通过 sample 函数,您可以从 DataFrame 中随机选择一部分或特定数量的行。这对于创建测试数据集、执行蒙特卡罗模拟或只是快速了解数据概况都非常有用。使用案例:当您拥有一个大型数据集,并希望在不加载整个数据集的情况下快速探索一个数据子集时,或者当您需要为机器学习创建一个训练样本时。

# Select 10% of the data randomly to explore a subset of a large datasetsampled_df = df.sample(frac=0.1, random_state=42)

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2024-09-14 09:32
  • 阅读 ( 58 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1470 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章