注意事项
保存python文件时注意文件名不要与需要安装的包发生重复
爬取网页数据生成表格
import requests
from bs4 import BeautifulSoup
import pandas as pd
ulist = []
# 爬取的网站的URL
url = "http://www.gaosan.com/gaokao/241219.html"
response = requests.get(url)
# 编码格式
response.encoding = 'utf-8'
# 编译数据
soup = BeautifulSoup(response.text, 'html.parser')
# 将数据存入定义好的ulist
for tr in soup.find('tbody').children:
tds = tr('td')
ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string, tds[4].string, tds[5].string])
# 获取指定数量的大学并打印:
# {:^10}表示将元素居中对齐,宽度为10个字符。
# \t表示制表符,用于分隔不同的列。
# chr(12288)通常用于中文文本的排版,以保持整齐的对齐。
for i in range(21):
u = ulist[i]
print("{:^10}\t{:^20}\t{:^10}\t{:^10}\t{:^10}\t{:^10}".format(u[0], u[1], u[2], u[3], u[4], u[5], chr(12288)))
# 创建一个pandas DataFrame对象
df = pd.DataFrame(ulist[1:21], columns=ulist[0])
# 将数据保存到Excel文件中
df.to_excel('学校排名.xlsx', index=False)
这里需要安装两个包 pip install pandas pip install requests
找到生成的表格
生成柱状图
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts
# 读取Excel文件
file_path = '学校排名.xlsx'
df = pd.read_excel(file_path)
# 统计'所在地区'列中各个地区的出现次数。
department_count = df['所在地区'].value_counts()
# 绘制柱状图
bar = (
Bar()
# 将'所在地区'列中各个地区的名称添加到图表的X轴上。
.add_xaxis(department_count.index.tolist())
# 将'所在地区'列中各个地区的出现次数添加到图表的Y轴上,并将这个数据系列命名为"数量"。
.add_yaxis("数量", department_count.values.tolist())
# 设置图表的全局选项。这里将图表的标题设置为"不同省份的大学数量"。
.set_global_opts(title_opts=opts.TitleOpts(title="不同省份的大学数量统计"))
)
# 生成HTML文件
bar.render('A-不同省份的大学数量.html')
这里注意安装pyecharts.charts包时,代码为pip install pyecharts
安装Bar包时,注意大小写敏感:pip install Bar
安装options包:pip install options
生成饼状图
import pandas as pd
from pyecharts.charts import Pie
from pyecharts import options as opts
file_path = '学校排名.xlsx'
df = pd.read_excel(file_path)
# 统计各学历人数
education_count = df['办学层次'].value_counts()
# 绘制饼图
pie = (
Pie()
# 将办学层次和对应的数量作为数据添加到饼图中。
# 其中,education_count是一个包含办学层次和对应数量的Series对象
# 通过zip函数将两个列表合并成一个元组列表,再使用list函数将其转换为列表形式。
# 最后,使用add方法将数据添加到饼图中,并设置系列名称为"数量"。
.add("数量", [list(z) for z in zip(education_count.index.tolist(), education_count.values.tolist())])
# 设置饼图的全局配置项。这里设置标题为"办学层次大学占比统计"。
.set_global_opts(title_opts=opts.TitleOpts(title="办学层次大学占比统计"))
# 设置饼图的标签格式。label_opts参数用于设置标签选项,opts.LabelOpts方法用于创建一个标签选项对象,并设置标签格式为"{b}: {c}"。
# 其中{b}表示办学层次,{c}表示数量。这样设置后,饼图中每个扇区的标签将显示为"教育层次: 数量"的形式。
# formatter作用: 格式化标签的参数。{b}、{c}代表占位符。
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
# 生成HTML文件
pie.render('A-办学层次大学占比统计.html')
生成散点图
import pandas as pd
from pyecharts.charts import Scatter
from pyecharts import options as opts
# 读取Excel表格数据
file_path = '学校排名.xlsx'
df = pd.read_excel(file_path)
# 提取’星级排名‘和’综合分数‘数据
rank = df["星级排名"].tolist()
score = df["综合得分"].tolist()
# 创建散点图对象
scatter = Scatter()
# 添加X轴数据
scatter.add_xaxis(rank)
# 添加Y轴数据
scatter.add_yaxis("综合得分", score)
# 设置全局选项
scatter.set_global_opts(
# 设置标题名称
title_opts=opts.TitleOpts(title="综合得分与星级排名关系散点图"),
# 设置X轴名称
xaxis_opts=opts.AxisOpts(name="星级排名"),
# 设置Y轴名称以及纵坐标的大小
yaxis_opts=opts.AxisOpts(name="综合得分",min_=70, max_=100),
)
# 渲染图表
scatter.render("A-综合得分与星级排名关系散点图.html")