|
|
# -*- coding: gbk -*-
|
|
|
import pandas as pd
|
|
|
from pyecharts import options as opts
|
|
|
from pyecharts.charts import Pie, Bar, Timeline
|
|
|
|
|
|
df = pd.read_csv('changsha天气.csv', encoding='gbk')
|
|
|
|
|
|
df['日期'] = df['日期'].apply(lambda x: pd.to_datetime(x))
|
|
|
|
|
|
df['month'] = df['日期'].dt.month
|
|
|
df_agg = df.groupby(['month', '风向/风速']).size().reset_index()
|
|
|
|
|
|
df_agg.columns = ['month', 'fengsu', 'count']
|
|
|
|
|
|
print(df_agg[df_agg['month'] == 1][['fengsu', 'count']] \
|
|
|
.sort_values(by='count', ascending=False).values.tolist())
|
|
|
|
|
|
#实例化一个时间序列的对象
|
|
|
timeline = Timeline()
|
|
|
#播放参数:设置时间间隔1s 单位是:ms(毫秒)
|
|
|
timeline.add_schema(play_interval=1000)
|
|
|
|
|
|
#循环遍历df_agg['month']里的唯一值
|
|
|
|
|
|
|
|
|
for month in df_agg['month'].unique():
|
|
|
data = (
|
|
|
df_agg[df_agg['month'] == month][['fengsu', 'count']]
|
|
|
.sort_values(by='count', ascending=True)
|
|
|
.values.tolist()
|
|
|
)
|
|
|
|
|
|
bar = Bar()
|
|
|
# x轴是天气名称
|
|
|
bar.add_xaxis([x[0] for x in data])
|
|
|
# y轴是各天气出现次数
|
|
|
bar.add_yaxis('风向/风速情况', [x[1] for x in data])
|
|
|
|
|
|
# 让柱状图横着放
|
|
|
bar.reversal_axis()
|
|
|
# 将计数标签放在图形右边
|
|
|
bar.set_series_opts(label_opts=opts.LabelOpts(position='right'))
|
|
|
# 设置下图表的名字
|
|
|
bar.set_global_opts(title_opts=opts.TitleOpts(title='长沙2023年每月风向变化'))
|
|
|
# 将设置好的bar对象放置到时间轮播图中,并且标签选择月份 格式为:数字月
|
|
|
timeline.add(bar, f'{month}月')
|
|
|
timeline.render('长沙风速风向轮播图.html')
|