[数据处理-经济管理]如何使用Python对数据进行分组运算?

一、前言与数据格式介绍

        在经济管理的研究中,常常会遇见这样一种数据结构:

NameYearIncomeTypeIncome
A2015投资理财收入123
A2015工资薪金收入124
A

2015

劳动报酬收入125
A2015其他收入126
A2016工资薪金收入213
A2016劳动报酬收入214
A2016其他收入521
A2017工资薪金收入213
A2018工资薪金收入322
A2018劳动报酬收入123
..............
B2015投资理财收入122

        上述表格是以“问卷形式”中有关问卷中收集到的居民A在Y年I种收入来源取得的收入(数据随意编的)。或者还有可能是上市公司、年份、收入类别(费用类别等)、收入(费用),这种类似的数据形式。更有甚者,可能还会出现这种情况:

NameYearIncomeTypeIncome
A2015投资理财收入1123
A2015投资理财收入2124
A

2015

劳动报酬收入1125
................

       那么,如何处理这类数据,得到按照Name、Year、Incometype三重固定归类的总收入情况呢?或者得到按照Name、Year、Incometype固定得到年度总收入的面板数据呢?下面我会用Python进行解答:

二、代码介绍

       下面的代码给予上述问题回复,改代码可以实现对总收入进行计算,并对部门进行规整重组进行运算,方便快捷。当然,有可能遇到在部门分类(收入来源分类)时碰见一些难以分类的情况,我们可能需要将其剔除。下述代码也进行了计算。

import pandas as pd

# 读取Excel数据
df = pd.read_excel(".xlsx", engine='openpyxl')
print(df['revenue'].apply(type).value_counts())

import pandas as pd

# 对公司、年份和部门进行分组加总
grouped_df = df.groupby(['code', 'stkcd' ,'year', 'Sectors'])['revenue'].sum().reset_index()

# 计算每个公司每年所有部门的总收入
total_income = df.groupby(['code', 'stkcd' ,'year'])['revenue'].sum().reset_index()
total_income.columns = ['code', 'stkcd' ,'year', '公司年度总收入']

# 计算剔除"不便于分类"部门后,每个公司每年所有部门的总收入
df_without_unclassified = df[df['Sectors'] != '不便于分类']
total_income_without_unclassified = df_without_unclassified.groupby(['code', 'stkcd' ,'year'])['revenue'].sum().reset_index()
total_income_without_unclassified.columns = ['code', 'stkcd' ,'year', '剔除不便于分类后公司年度总收入']

# 将总收入和剔除"不便于分类"部门后的总收入合并到原始数据集
final_df = pd.merge(grouped_df, total_income, on=['code', 'stkcd' ,'year'])
final_df = pd.merge(final_df, total_income_without_unclassified, on=['code', 'stkcd' ,'year'], how='left')

# 保存到新的Excel文件
final_df.to_excel(".xlsx", index=False)

三、进一步处理

        当然,我们还可能需要得到最大收入项目,将其标识为主要收入,其他的作为辅助收入来源,下述代码也可以在上述代码基础上进一步实现处理规整。

import pandas as pd

df = pd.read_excel(".xlsx", sheet_name='')

# 对数据进行分组并获取每个组的最大收入
grouped = df.groupby(['公司', '年度'])
max_revenues = grouped['收入'].max()

# 获取每个组收入最大的部门
max_department_indexes = df.groupby(['公司', '年度'])['收入'].idxmax()
max_departments = df.loc[max_department_indexes, '部门']

# 将每个公司、年份的主要部门设置为'Main_industry',其他部门设置为'Sup_industry'
df['部门类型'] = 'Sup_industry'
for i in range(len(max_departments)):
    df.loc[(df['公司'] == max_revenues.index[i][0]) & (df['年度'] == max_revenues.index[i][1]) & (df['部门'] == max_departments.loc[max_department_indexes[i]]), '部门类型'] = 'Main_industry'

# 将结果输出到一个新的Excel文件
with pd.ExcelWriter(".xlsx") as writer:
    df.to_excel(writer, index=False)

# 输出完成消息
print('结果已输出到result.xlsx文件中。')

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
使用Python进行数据分析可以通过多种方式实现。其一种常用的方式是使用Pandas库。Pandas是一个开源的数据分析和数据处理库,提供了丰富的数据结构和数据操作方法。通过Pandas,可以方便地加载、处理和分析数据。 在Python,可以使用Pandas的DataFrame对象来处理和分析数据。DataFrame是Pandas最常用的数据结构,类似于Excel的表格,可以方便地对数据进行操作和分析。可以使用Pandas提供的方法对数据进行筛选、排序、分组和聚合等操作,同时还可以进行数据可视化和统计分析。 另外,还可以使用其他的Python库来进行数据分析,比如NumPy、Matplotlib和Scikit-learn等。NumPy提供了高性能的数组和矩阵运算功能,Matplotlib用于绘制图表和可视化数据,Scikit-learn用于机器学习和数据挖掘。 使用Python进行数据分析的步骤可以概括为以下几个: 1. 导入所需的库,比如Pandas、NumPy和Matplotlib。 2. 加载数据,可以从文件读取数据,也可以从数据库或API获取数据。 3. 对数据进行预处理,包括数据清洗、缺失值处理、异常值处理等。 4. 进行数据分析,可以使用Pandas提供的方法对数据进行筛选、排序、分组和聚合等操作。 5. 可选地进行数据可视化,使用Matplotlib或其他可视化工具绘制图表。 6. 进行统计分析,可以使用Pandas的描述统计方法或其他统计学工具进行分析。 7. 可选地进行机器学习和数据挖掘,使用Scikit-learn等库进行模型训练和预测。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Fonsi-

没饭吃了,帮帮孩子

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

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

打赏作者

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

抵扣说明:

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

余额充值