壮心未与年俱老,死去犹能作鬼雄。这篇文章主要讲述百度飞桨学习——七日打卡作业选手数据分析相关的知识,希望能为你提供帮助。
百度飞桨学习——七日打卡作业(三)选手数据分析
文章目录
- 百度飞桨学习——七日打卡作业(三)选手数据分析
- 任务描述
- 绘制选手区域分布柱状图
- 普通方法绘制
- 使用pandas进行数据处理
- 体重饼图绘制
- 普通方法处理
- 使用pandas进行数据处理
任务描述 【百度飞桨学习——七日打卡作业选手数据分析】基于第二天实践使用python来爬去百度百科中《青春有你2》所有参赛选手的信息,进行数据可视化分析。
# 下载中文字体
!wget https://mydueros.cdn.bcebos.com/font/simhei.ttf
# 将字体文件复制到matplotlib字体路径
!cp simhei.ttf /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
# 一般只需要将字体文件复制到系统字体目录下即可,但是在aistudio上该路径没有写权限,所以此方法不能用
# !cp simhei.ttf /usr/share/fonts/# 创建系统字体文件路径
!mkdir .fonts
# 复制文件到该路径
!cp simhei.ttf .fonts/
!rm -rf .cache/matplotlib
绘制选手区域分布柱状图 普通方法绘制
import matplotlib.pyplot as plt
import numpy as np
import json
import matplotlib.font_manager as font_manager#显示matplotlib生成的图形
%matplotlib inline
#使用json加载图片
with open(data/data31557/20200422.json, r, encoding=UTF-8) as file:
json_array = json.loads(file.read())#绘制小姐姐区域分布柱状图,x轴为地区,y轴为该区域的小姐姐数量zones = []
for star in json_array:
zone = star[zone]#获取json中的区域属性
zones.append(zone)#将他存到列表中
print(len(zones))
print(zones)zone_list = []
count_list = []for zone in zones:
if zone not in zone_list:
count = zones.count(zone)
zone_list.append(zone)
count_list.append(count)print(zone_list)
print(count_list)# 设置显示中文,
plt.rcParams[font.sans-serif] = [SimHei] # 指定默认字体plt.figure(figsize=(20,15))
#range(len(count_list)表示x轴的刻度
#tick_label设置x坐标
#facecolor设置柱状图颜色
#edgecolor=white边框颜色
plt.bar(range(len(count_list)), count_list,color=r,tick_label=zone_list,facecolor=#9999ff,edgecolor=white)# 这里是调节横坐标的倾斜度,rotation是度数,以及设置刻度字体大小
plt.xticks(rotation=45,fontsize=20)#x轴字体倾斜
plt.yticks(fontsize=20)plt.legend()
plt.title(《青春有你2》参赛选手,fontsize = 24)
plt.savefig(/home/aistudio/work/result/bar_result.jpg)
plt.show()
使用pandas进行数据处理
import matplotlib.pyplot as plt
import numpy as np
import json
import matplotlib.font_manager as font_manager
import pandas as pd#显示matplotlib生成的图形
%matplotlib inline#使用pandas读取json
df = pd.read_json(data/data31557/20200422.json)
#print(df)
#取出name,使用groupby对区域zone进行聚合
grouped=df[name].groupby(df[zone])
s = grouped.count()#聚合计数
#取出聚合后的值
#例如:
#index values
# 四川9
zone_list = s.index
count_list = s.values# 设置显示中文,matplotlib默认是英文
plt.rcParams[font.sans-serif] = [SimHei] # 指定默认字体plt.figure(figsize=(20,15))plt.bar(range(len(count_list)), count_list,color=r,tick_label=zone_list,facecolor=#9999ff,edgecolor=white)# 这里是调节横坐标的倾斜度,rotation是度数,以及设置刻度字体大小
plt.xticks(rotation=45,fontsize=20)
plt.yticks(fontsize=20)plt.legend()
plt.title(《青春有你2》参赛选手,fontsize = 24)
plt.savefig(/home/aistudio/work/result/bar_result02.jpg)
plt.show()
体重饼图绘制 普通方法处理
import matplotlib.pyplot as plt
import numpy as np
import json
import matplotlib.font_manager as font_manager#显示matplotlib生成的图形
%matplotlib inlinewith open(data/data31557/20200422.json, r, encoding=UTF-8) as file:
json_array = json.loads(file.read())#绘制小姐姐区域分布柱状图,x轴为地区,y轴为该区域的小姐姐数量weights = []
for star in json_array:
weight = float(star[weight].replace(kg,))
weights.append(weight)
#print(len(weights))
#print(weights)weight_list = []
count_list = []weight1=weight2=weight3=weight4=0
for weight in weights:
if weight <
=45:
weight1+=1
elif 45<
weight<
=50:
weight2+=1
elif 50<
weight<
=55:
weight3+=1
else:
weight4+=1labels = 45kg及以下,45-50kg之间,50-55kg之间,55kg以上weightsize =[weight1,weight2,weight3,weight4]print(weightsize[0])
print(weightsize[1])
print(weightsize[2])
print(weightsize[3])explode = (0.1,0.05,0.15,0.3)#各个饼区域的偏移值
#颜色
colors = lightgreen,gold,lightskyblue,lightcoral
#画布fig1,子图ax1
fig1,ax1 = plt.subplots()
#startangle从哪个方向开始
ax1.pie(weightsize,explode=explode,labels=labels,colors=colors,autopct=%1.1f%%,shadow=True,startangle=90)ax1.axis(equal)#绘制圆图#标题
plt.title(震惊!参赛选手体重大揭秘!,fontsize = 24)
plt.savefig(/home/aistudio/work/result/bar_result.jpg)
plt.show()
使用pandas进行数据处理
import matplotlib.pyplot as plt
import numpy as np
import json
import matplotlib.font_manager as font_manager
import pandas as pd
#显示matplotlib生成的图形
%matplotlib inlinedf = pd.read_json(data/data31557/20200422.json)weights = df[weight]
arrs = weights.valuesfor i in range(len(arrs)):
arrs[i] = float(arrs[i][0:-2])#去掉kgbin = [0,45,50,55,100]
se1 = pd.cut(arrs,bin)#数据区间按bin进行切割pd.value_counts(se1)#各个区间计数
labels = 45kg以下,45-50kg之间,50-55kg之间,55kg多一点
sizes = pd.value_counts(se1)
explode = (0.1,0.2,0.1,0.05)fig1,ax1 = plt.subplots()
ax1.pie(sizes,explode=explode,labels=labels,autopct=%1.1f%%,shadow=True,startangle=90)
ax1.axis(equal)plt.title(独家揭秘!参赛选手体重真相竟然是!,fontsize = 24)
plt.savefig(/home/aistudio/work/result/bar_result.jpg)
plt.show()
#绘制小姐姐区域分布柱状图,x轴为地区,y轴为该区域的小姐姐数量
推荐阅读
- LC-RNN: A Deep Learning Model for Traffic Speed Prediction
- WP-无法使用自定义登录名修改标头信息[重复]
- 如果值是字符串数组,则Worpdress元查询不起作用
- wordpress wp每??页默认查询帖子
- WordPress-wp_enqueue_style将样式添加到页脚,而不是页眉
- WordPress WP入队脚本问题
- 当我尝试使用自定义模板页面时,WordPress会抛出404
- WordPress主题选项页面创建一个选择列表(下拉列表)()
- WordPress主题不响应更新