如何使用Pandas实现数据的列转统计?

如何使用Pandas实现数据的列转统计?

利用pandas高效实现数据列转统计

数据分析中,经常需要对数据进行灵活的重组和统计分析。例如,将包含日期和类型的数据集转换为每日不同类型计数的统计表。本文将演示如何使用Pandas库高效地完成此类操作。

假设我们有一个包含’date’(日期)和’type’(类型)两列的数据框(DataFrame),数据示例如下:

date       type 2024-01-01  1 2024-01-01  2 2024-01-01  1 2024-01-02  3 2024-01-02  2 2024-01-02  3 2024-01-02  1 2024-01-02  1 2024-01-03  1 2024-01-03  4 2024-01-03  2 2024-01-03  5 ...

目标是将数据转换为如下格式,显示每种类型在每一天的计数:

date       type1  type2  type3  type4  type5 2024-01-01  2      1      0      0      0 2024-01-02  2      1      2      0      0 2024-01-03  1      1      0      1      1 ...

我们可以利用Pandas的pd.get_dummies()和groupby()函数组合实现这一目标。以下是python代码:

import pandas as pd  # 示例数据 data = {     'date': ['2024-01-01', '2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02', '2024-01-02', '2024-01-02', '2024-01-02', '2024-01-03', '2024-01-03', '2024-01-03', '2024-01-03'],     'type': [1, 2, 1, 3, 2, 3, 1, 1, 1, 4, 2, 5] }  df = pd.DataFrame(data)  # 使用get_dummies()进行one-hot编码 df_encoded = pd.get_dummies(df, columns=['type'], prefix='type')  # 使用groupby()和sum()进行分组统计 result = df_encoded.groupby('date').sum()  # 打印结果 print(df_encoded) print("-" * 60) print(result)

代码首先使用pd.get_dummies()将’type’列转换为虚拟变量,然后使用groupby(‘date’).sum()对日期进行分组并对每个类型进行求和,最终得到目标统计表。

输出结果类似于:

         date  type_1  type_2  type_3  type_4  type_5 0  2024-01-01       1       0       0       0       0 1  2024-01-01       0       1       0       0       0 2  2024-01-01       1       0       0       0       0 3  2024-01-02       0       0       1       0       0 4  2024-01-02       0       1       0       0       0 5  2024-01-02       0       0       1       0       0 6  2024-01-02       1       0       0       0       0 7  2024-01-02       1       0       0       0       0 8  2024-01-03       1       0       0       0       0 9  2024-01-03       0       0       0       1       0 10 2024-01-03       0       1       0       0       0 11 2024-01-03       0       0       0       0       1 ------------------------------------------------------------             type_1  type_2  type_3  type_4  type_5 date                                            2024-01-01       2       1       0       0       0 2024-01-02       2       1       2       0       0 2024-01-03       1       1       0       1       1

通过这个简洁的代码,我们可以轻松地完成Pandas数据列转统计,提高数据分析效率。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享