这篇简单简述怎么用Python工具进行数据分析,主要使用matplotlib、senborn以及pyecharts来进行。其紧跟前面用爬虫爬出来的数据来分析。
一、用matplotlib分析数据
Matplotlib 是一个 Python 的图表绘制库,广泛用于生成各种静态、动态和交互式的图表。其中官网就有很多学习和设计案例:https://matplotlib.org/stable/gallery/index.html
1.代码设计
使用pandas来整理数据,再数据分析:
import pandas as pd
from matplotlib import pyplot as plt
# 解决中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决符号无法显示
plt.rcParams['axes.unicode_minus'] = False
# 读取数据
data = pd.read_csv('排行榜.csv')
# 去除歌名列重复数据
data = data.drop_duplicates(subset=['歌名'],keep='first')
# 统计时长/y轴
y = []
for time in data['时长']:
y.append(int(time[1])*60+int(time[3])*10+int(time[4]))
# 歌名/x轴
x = data['歌名']
# 添加图表
plt.figure(figsize=(8,4))
# 设置图表、x、y轴三个标签
plt.title('前四歌曲时长统计',fontsize=14)
plt.xlabel('歌名',fontsize=14)
plt.ylabel('时长',fontsize=14)
# 设置x,y关系式
plt.plot(x[0:4],y[0:4])
plt.show()
其中,drop_duplicates()函数是去重使用,一般有三个参数:
subset:表示要进去重的列名,默认为 None。
keep:有三个可选参数,分别是 first、last、False,默认为 first,表示只保留第一次出现的重复项,删除其余重复项,last 表示只保留最后一次出现的重复项,False 则表示删除所有重复项。
inplace:布尔值参数,默认为 False 表示删除重复项后返回一个副本,若为 Ture 则表示直接在原数据上删除重复项。
2.运行结果
二、用seaborn分析数据
Seaborn 是一个基于 matplotlib 的 Python 数据可视化库,它专注于绘制各种统计图形,以便更轻松地呈现和理解数据。其主要特点包括:
- 提供高级接口:能够通过少量代码实现复杂的统计图形绘制。
- 简化可视化过程:用户只需关注要绘制的内容,而无需过多关注图形的细节设置。
- 支持多种统计图形:例如散点图(
sns.scatterplot()
)、折线图(sns.lineplot()
)、柱状图(sns.barplot()
)、箱线图(sns.boxplot()
)、热图(sns.heatmap()
)等。
其官网也有很多案例:Example gallery — seaborn 0.13.2 documentation
1.代码设计
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
# 解决中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决符号无法显示
plt.rcParams['axes.unicode_minus'] = False
# 读取数据
data = pd.read_csv('排行榜.csv')
# 去除歌名列重复数据
data = data.drop_duplicates(subset=['歌名'],keep='first')
# 统计时长/y轴
y = []
for time in data['时长']:
y.append(int(time[1])*60+int(time[3])*10+int(time[4]))
sns.displot(y,bins=15,color='r',kde=True) # 时长分布统计
plt.show()
2.运行结果
三、使用pycharts分析数据
Pyecharts 是一个用于生成 Echarts 图表的 Python 库。而Echarts 是一个由百度开源的强大的数据可视化库,具有出色的交互性和精美的可视化效果。而 Pyecharts 将 Echarts 与 Python 语言相结合,使得 Python 开发者能够更方便地创建各种类型的图表。
Pyecharts 的主要特点和优势包括:
-
丰富的图表类型:支持多种常见的图表类型,如折线图、柱状图、饼图、地图、箱线图等,满足不同场景下的数据可视化需求。
-
简洁的 API 设计:提供了简单易懂的接口,使得创建图表的代码简洁易读,易于理解和使用。
-
高度可定制性:允许开发者对图表的各种属性进行详细的配置,包括颜色、字体、标题、坐标轴等,以满足个性化的需求。
-
支持交互:生成的图表具有交互功能,用户可以通过鼠标操作进行缩放、平移、数据筛选等。
-
与 Jupyter Notebook 集成:可以在 Jupyter Notebook 环境中直接展示图表,方便数据分析和探索。
官网:简介 - pyecharts - A Python Echarts Plotting Library built with love.
1、代码设计
因为导入数据的过程中,就只有一个播放时长适合统计,所以我们随机给每一行数据设计一个播放量
import csv
import pandas as pd
import random
from pyecharts.charts import Pie
from pyecharts import options as opts
result = []
with open('排行榜.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
result.append(row)
# 添加播放量
result[0].append('播放量')
for i in range(1,len(result)):
result[i].append(random.randint(100000, 200000))
data = pd.DataFrame(result)
data = data.drop_duplicates(subset=[2],keep='first')
# 设置x,y
x = data[2]
y = data[6]
# 画饼
pie = Pie()
pie.add(
"播放量",
list(zip(x[0:10], y[0:10])),
radius=["50%", "75%"],
rosetype="radius",
)
pie.set_global_opts(title_opts=opts.TitleOpts(title="排行榜前十"), legend_opts=opts.LegendOpts())
pie.render('pie.html')
2、运行结果
这里会生成html文件,我们再去运行这个文件。
会在浏览器,得到如下图:
四、最终代码
三种工具分析,所以有三个文件
qqmatplotlib.py
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
data = pd.read_csv('排行榜.csv')
data = data.drop_duplicates(subset=['歌名'],keep='first')
y = []
for time in data['时长']:
y.append(int(time[1])*60+int(time[3])*10+int(time[4]))
x = data['歌名']
plt.figure(figsize=(8,4))
plt.title('前四歌曲时长统计',fontsize=14)
plt.xlabel('歌名',fontsize=14)
plt.ylabel('时长',fontsize=14)
plt.plot(x[0:4],y[0:4])
plt.show()
qqseaborn.py
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
data = pd.read_csv('排行榜.csv')
data = data.drop_duplicates(subset=['歌名'],keep='first')
y = []
for time in data['时长']:
y.append(int(time[1])*60+int(time[3])*10+int(time[4]))
sns.displot(y,bins=15,color='r',kde=True) # 时长分布统计
plt.show()
qqpycharts.py
import csv
import pandas as pd
import random
from pyecharts.charts import Pie
from pyecharts import options as opts
result = []
with open('排行榜.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
result.append(row)
result[0].append('播放量')
for i in range(1,len(result)):
result[i].append(random.randint(100000, 200000))
data = pd.DataFrame(result)
data = data.drop_duplicates(subset=[2],keep='first')
x = data[2]
y = data[6]
pie = Pie()
pie.add(
"播放量",
list(zip(x[0:10], y[0:10])),
radius=["50%", "75%"],
rosetype="radius",
)
pie.set_global_opts(title_opts=opts.TitleOpts(title="排行榜前十"), legend_opts=opts.LegendOpts())
pie.render('pie.html')
更多有趣的内容可以去官网观摩,学习