在上节课的基础上,完成

1. 统计某工号整年收入数据(求和)

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt

df_csv = pd.read_csv('工资数据.csv')

num_27=df_csv[df_csv['工号']==27]

num_27_2023=num_27[(num_27['月份']>="2023-01") & (num_27['月份']<"2024-01")]
total_revenue_2023 = num_27_2023['实发金额'].sum()

print(total_revenue_2023)

2. 统计20、21、22、23年收入变化趋势(用函数进行)

需要用函数来处理,类似情况

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt

plt.rcParams["font.family"] = "SimHei"
df_csv = pd.read_csv('./4. Pandas/工资数据.csv', encoding='utf-8')


num_27=df_csv[df_csv['工号']==27]

# 定义函数
def filter_by_month(df, start_date, end_date):
    return df[(df['月份'] >= start_date)& (df['月份'] < end_date)]

num_27_2020=filter_by_month(num_27,"2020-01","2021-01")
num_27_2021=filter_by_month(num_27,"2021-01","2022-01")
num_27_2022=filter_by_month(num_27,"2022-01","2023-01")
num_27_2023=filter_by_month(num_27,"2023-01","2024-01")

num_27_2020=num_27_2020['实发金额'].sum()
num_27_2021=num_27_2021['实发金额'].sum()
num_27_2022=num_27_2022['实发金额'].sum()
num_27_2023=num_27_2023['实发金额'].sum()

3. 对收入情况进行排序处理(排序)

此处需要用到分组功能

groupby 进行分组

ascending=False 降序

salary = df_2023.groupby(["工号"])["实发金额"].sum()
salary_sorted = salary.sort_values(ascending=False).head(60)

4. 对结果进行图表化

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt

plt.rcParams["font.family"] = "SimHei"
df_csv = pd.read_csv('./4. Pandas/工资数据.csv', encoding='utf-8')


def filter_by_month(df, start_date, end_date):
    return df[(df['月份'] >= start_date)& (df['月份'] < end_date)]

df_2023=filter_by_month(df_csv,"2023-01","2024-01")

salary = df_2023.groupby(["工号"])["实发金额"].sum()


salary_sorted = salary.sort_values(ascending=False).head(60)

print(salary_sorted)
fig = plt.figure(figsize=(6, 4))
ax = fig.add_subplot()
ax.bar(salary_sorted.index.astype(str), salary_sorted.values)


plt.title('2023 年各工号实发金额总和')
plt.xlabel('工号')
plt.ylabel('实发金额总和')
plt.xticks(rotation=45)  # 旋转 x 轴标签,防止重叠
plt.show()

练习:用图表比较2023-12各员工收入情况