1:查看单日交易额最小的3天的交易数据,并查看这3天是周几
1.1:导入模块
import pandas as pd
1.2:数据处理
读取表格数据
df = pd.read_excel("超市营业额.xlsx")
根据日期分类汇总,按交易额求和汇总并取最小的前3位和交易额的列名
df1 = df.groupby(by="日期", as_index=False).agg({"交易额": "sum"}).nsmallest(3,['交易额
1.3:输出结果
print(pd.to_datetime(df1.日期).dt.day_name())
24 Monday 20 Thursday 9 Sunday Name: 日期, dtype: object
完整代码
import pandas as pd df = pd.read_excel("超市营业额.xlsx") df1 = df.groupby(by="日期", as_index=False).agg({"交易额": "sum"}).nsmallest(3,['交易额']) print(pd.to_datetime(df1.日期).dt.day_name())
2:把所有员工的工号前面增加一位数字,增加的数字和原工号最后一位相同,把修改后的数据写入新的文件“超市营业额2_修改工号.xlsx”
2.1:导入模块
import pandas as pd
2.2:数据处理
读取表格数据
df = pd.read_excel("超市营业额.xlsx")
把所有员工的工号前面增加一位数字
df['工号']=df['工号'].map(lambda s: str(s)[-1] + str(s))
把修改后的数据写入新的文件“超市营业额2_修改工号.xlsx”
df1 = pd.read_excel("超市营业额2_修改工号.xlsx")
查看是否写入
df1 = pd.read_excel("超市营业额2_修改工号.xlsx") print(df1)
工号 姓名 日期 时段 交易额 柜台 0 11001 张三 2019-03-01 9:00-14:00 1664.0 化妆品 1 21002 李四 2019-03-01 14:00-21:00 954.0 化妆品 2 31003 王五 2019-03-01 9:00-14:00 1407.0 食品 3 41004 赵六 2019-03-01 14:00-21:00 1320.0 食品 4 51005 周七 2019-03-01 9:00-14:00 994.0 日用品 .. ... .. ... ... ... ... 244 21002 李四 2019-03-31 14:00-21:00 859.0 蔬菜水果 245 41004 赵六 2019-03-31 9:00-14:00 1668.0 日用品 246 41004 赵六 2019-03-31 14:00-21:00 1722.0 日用品 247 31003 王五 2019-03-31 9:00-14:00 1274.0 食品 248 61006 钱八 2019-03-31 14:00-21:00 812.0 食品
完整代码
import pandas as pd df = pd.read_excel("超市营业额.xlsx") df['工号']=df['工号'].map(lambda s: str(s)[-1] + str(s)) df.to_excel('超市营业额2_修改工号.xlsx',index = False) df1 = pd.read_excel("超市营业额2_修改工号.xlsx") print(df1)
3:把每个员工的交易额数据写入文件“各员工数据.xlsx”,每个员工的数据占一个 worksheet,结构和“超市营业额2.xlsx”一样,并以员工姓名作为worksheet 的标题
3.1:导入模块
import pandas as pd
3.2:数据处理
读取表格数据
df = pd.read_excel("超市营业额.xlsx")
设置输出格式
writer = pd.ExcelWriter('各员工数据.xlsx')
读取姓名并去重
names = set(df['姓名'])
每个员工的数据占一个 worksheet,并以员工姓名作为worksheet 的标题
for name in names: df1 = df[df.姓名 == name] df1.to_excel(writer, sheet_name = name, index = False) writer.save()
完整代码
import pandas as pd df = pd.read_excel("超市营业额.xlsx") writer = pd.ExcelWriter('各员工数据.xlsx') names = set(df['姓名']) for name in names: df1 = df[df.姓名 == name] df1.to_excel(writer, sheet_name = name, index = False) writer.save()
4:利用Pandas绘制折线图展示一个月内各柜台营业额每天的变化趋势
4.1:导入模块
import pandas as pd import matplotlib.pyplot as pt import matplotlib.font_manager as fm
4.2:数据处理
读取表格数据并筛选列名为’日期’, ‘柜台’, ‘交易额’,的列
df = pd.read_excel('超市营业额.xlsx',usecols=['日期', '柜台', '交易额'])
根据日期和柜台分类汇总,对交易额进行求和
df = df.groupby(by = ['日期','柜台'], as_index = False).agg({"交易额": "sum"})
以日期横轴,柜台为纵轴,交易额为变化曲线画图
df = df.pivot(index = '日期', columns = '柜台', values = '交易额') df.plot()
完整代码
import pandas as pd import matplotlib.pyplot as pt import matplotlib.font_manager as fm df = pd.read_excel('超市营业额.xlsx',usecols=['日期', '柜台', '交易额']) df = df.groupby(by = ['日期','柜台'], as_index = False).agg({"交易额": "sum"}) df = df.pivot(index = '日期', columns = '柜台', values = '交易额') df.plot()
5:利用Pandas绘制饼状图展示该月各柜台营业额在交易总额中的占比
5.1:导入模块
import pandas as pd import matplotlib.pyplot as pt import matplotlib.font_manager as fm
5.2:数据处理
设置使用中文字体(font)为黑体(SimHei)
pt.rcParams['font.sans-serif'] = ['simhei']
读取表格数据并筛选列名为 ‘柜台’, ‘交易额’,的列
df = pd.read_excel('超市营业额.xlsx',usecols=['柜台', '交易额'])
根据柜台分类汇总,对交易额进行求和
df = df.groupby(by = ['柜台'], as_index = False).agg({"交易额": "sum"})
展示该月各柜台营业额在交易总额中的占比
df = df.plot(x = '柜台', y = '交易额', kind = 'pie', labels = df.柜台.values) pt.legend() pt.show()
完整代码
import pandas as pd import matplotlib.pyplot as pt import matplotlib.font_manager as fm pt.rcParams['font.sans-serif'] = ['simhei'] df = pd.read_excel('超市营业额.xlsx',usecols=['柜台', '交易额']) df = df.groupby(by = ['柜台'], as_index = False).agg({"交易额": "sum"}) df = df.plot(x = '柜台', y = '交易额', kind = 'pie', labels = df.柜台.values) pt.legend() pt.show()
6:绘制柱状图展示张三在不同柜台的交易总额
6.1:导入模块
import pandas as pd import matplotlib.pyplot as pt import matplotlib.font_manager as fm
6.2:数据处理
设置使用中文字体(font)为黑体(SimHei)
pt.rcParams['font.sans-serif'] = ['simhei']
读取表格数据并筛选列名为’姓名’, ‘柜台’, ‘交易额’,的列
df = pd.read_excel('超市营业额.xlsx',usecols=['姓名','柜台', '交易额'])
筛选姓名为张三的信息
df = df[df.姓名 == '张三']
根据柜台分类汇总,对交易额进行求和
df = df.groupby(by = ['柜台'], as_index = False).agg({"交易额": "sum"})
绘制柱状图展示张三在不同柜台的交易总额
df = df.plot(x = '柜台', y = '交易额', kind = 'bar') pt.legend() pt.show()
完整代码
import pandas as pd import matplotlib.pyplot as pt import matplotlib.font_manager as fm pt.rcParams['font.sans-serif'] = ['simhei'] df = pd.read_excel('超市营业额.xlsx',usecols=['姓名','柜台', '交易额']) df = df[df.姓名 == '张三'] df = df.groupby(by = ['柜台'], as_index = False).agg({"交易额": "sum"}) df = df.plot(x = '柜台', y = '交易额', kind = 'bar') pt.legend() pt.show()