本文章代码仅供参考,有多数错误,请自行辨别。
本文章代码仅供参考,有多数错误,请自行辨别。
一、 数据处理
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()