本文章代码仅供参考,有多数错误,请自行辨别。
本文章代码仅供参考,有多数错误,请自行辨别。
一、 数据处理
1、 删除“商品销售量.csv”数据中的空值行
# 导入必备的库 import pandas as pd # 导入数据 sales = pd.read_csv('商品销售额.csv', encoding='gbk') # 清理数据 sales_clean = sales.dropna() # 导出数据 sales_clean.to_csv('商品销售额_clean.csv', index=False)
2、 统计“tmall_order_report.csv”中的收货地址,正序排序显示前五个
# 导入数据 tmall = pd.read_csv('tmall_order_report.csv', encoding='gbk') # 统计 收货地址 次数 tmall_counts = tmall['收货地址'].value_counts() # 获取前五个常见地址 top5_tmall_counts = tmall_counts.head(5) # 按地址的出现次数正序排序 top5_tmall_sort = top5_tmall_counts.sort_values(ascending=True) # 输出数据 print(top5_tmall_sort)
3、 算取“tmall_order_report.csv”中总金额的平均数
# 上题已导入 tmall_order_report.csv 的数据 # 计算总金额的平均数 average_amount = tmall['总金额'].mean() # 输出数据 print(f'总金额平均数: {average_amount}')
4、 统计“tmall_order_report.csv”中每日的订单数量
# 上题已导入 tmall_order_report.csv 的数据 # 解析 '订单创建时间' 列为 datetime 类型 tmall['订单创建时间'] = pd.to_datetime(tmall['订单创建时间'], format='%Y/%m/%d %H:%M') # 提取日期部分 tmall['订单日期'] = tmall['订单创建时间'].dt.date # 统计每日的订单数量 daily_order_counts = tmall['订单日期'].value_counts().sort_index() # 输出数据 print(daily_order_counts)
5、 将“销售额.csv”中的类型进行排序(降序)
# 导入数据 sell = pd.read_csv('销售额.csv', encoding='gbk') # 排序数据(降序) sell_sort = sell.sort_values(by='类型', ascending=False) # 输出数据 print(sell_sort)
二、 可视化
1、 读取“销售额.csv”中的数据,使用matplotlib库绘制柱状图,要求显示数据,画布大小为(12,10)
# 导入必备的库 import pandas as pd import matplotlib.pyplot as plt # 设置中文字体 plt.rcParams['font.sans-serif'] = ['SimSun'] # 读取CSV文件 sell = pd.read_csv('销售额.csv', encoding='gbk') # 创建画布 fig, ax = plt.subplots(figsize=(12, 10)) # 绘制柱状图 ax.bar(sell['类型'], sell['A'], color='skyblue', label='A') ax.bar(sell['类型'], -sell['B'], color='salmon', label='B') # 显示图形 plt.show()
2、根据任务一中清洗过的“商品销售量.csv“数据,使用seaborn画一个热力图,风格自定。不显示数据。
# 导入必备的库 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 读取数据 data = pd.read_csv('商品销售额_clean.csv', index_col='省份', encoding='gbk') # 设置风格 sns.set(style='white') plt.rcParams['font.sans-serif'] = ['SimSun'] # 创建热力图 plt.figure(figsize=(12, 8)) ax = sns.heatmap(data, cmap='cool') # 设置标题 plt.title('商品销售额热力图') # 显示图像 plt.show()
3、根据提供的json文件,用pyecharts画出关系图,要求线条弧度为0.3,颜色为source Layout为circular。
import json from pyecharts import options as opts from pyecharts.charts import Graph with open('les-miserables.json', 'r', encoding='utf8') as file: data = json.load(file) nodes = data['nodes'] links = data['links'] categories = data['categories'] graph = ( Graph() .add( "", nodes, links, categories=categories, layout="circular", is_rotate_label=True ) .set_series_opts( linestyle_opts=opts.LineStyleOpts( curve=0.3, color='source' ), ) ) graph.render("Graph.html")
三、 业务分析(所用数据位“商品销售量.csv”)
基于 Python 实现历史最高温城市排名分 析
现有一份关于 2011-2022 年全国各城市的每日天气数据 17 17 集,字段说明如下表:
表 7 每日天气数据集说明表
列名 字段说明
city 城市
hightest_tem 最高气温
lowest_tem 最低气温
weather 天气
date 日期
wind_direction 风向
wind_level 风力等级
month_day 月-日
weekday 星期
请编写代码实现功能,数据集为“clean_day.csv”。 绘图过程中如有使用中文字体的地方,请统一使用 “SimSun”字体。
从数据集中取出 2011-2021 年的数据,计算出每个城市 在这 10 年中出现的最高温度,然后将该指标排名前 10 的城 市数据取出并绘制出这些城市最高温统计图进行分析,
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 读取数据 data = pd.read_csv('clean_day.csv') # 将日期列转换为日期格式,并过滤出2011-2021年的数据 data['date'] = pd.to_datetime(data['date']) data = data[(data['date'].dt.year >= 2011) & (data['date'].dt.year <= 2021)] # 计算每个城市在2011-2021年期间的最高温度 max_temps = data.groupby('city')['hightest_tem'].max().reset_index() # 获取最高温度排名前10的城市 top10_cities = max_temps.nlargest(10, 'hightest_tem') print(top10_cities)
具体 绘图要求如下:
(1)使用 Seaborn 绘制出以上指标的柱状图,主题设 置为“whitegrid”,字体为“SimSun”,字体缩放因子设置 为 3;
(2)柱状图颜色设置为 Seaborn 中调色板“hls”的默 认颜色;
(3)柱状图上需要显示数据标签,数据标签中需要带 有单位(℃),颜色为黑色; (4)设置图像标题为“2011-2021 中高温城市排名”; 18 18
(5)横轴标签为“城市”,纵轴标签为“最高温(℃)”;
(6)横轴的刻度标签为各城市的名字;
(7)纵轴的刻度范围是(0,55)。
(8)绘制完成后将图片粘贴到答题报告对应位置。 图 2 结果示意图(图中数据请以实际计算结果为准)
import matplotlib.pyplot as plt import seaborn as sns plt.figure(figsize=(6, 4)) plt.rcParams['font.sans-serif'] = ['SimSun'] ax = sns.barplot(x='city', y='hightest_tem', data=top10_cities, palette=sns.color_palette()) # 添加数据标签 for p in ax.patches: ax.annotate(f'{p.get_height()}℃', (p.get_x() + p.get_width() / 2., p.get_height()), ha='center', va='center', xytext=(0, 5), textcoords='offset points') # 设置标题和标签 ax.set_title('2011-2021 中高温城市排名', fontsize=12) ax.set_xlabel('城市', fontsize=10) ax.set_ylabel('最高温(℃)', fontsize=10) plt.show()