Python爬虫+数据可视化+存入数据库(3)

        这篇简单简述怎么用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 数据可视化库,它专注于绘制各种统计图形,以便更轻松地呈现和理解数据。其主要特点包括:

  1. 提供高级接口:能够通过少量代码实现复杂的统计图形绘制。
  2. 简化可视化过程:用户只需关注要绘制的内容,而无需过多关注图形的细节设置。
  3. 支持多种统计图形:例如散点图(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 的主要特点和优势包括:

  1. 丰富的图表类型:支持多种常见的图表类型,如折线图、柱状图、饼图、地图、箱线图等,满足不同场景下的数据可视化需求。

  2. 简洁的 API 设计:提供了简单易懂的接口,使得创建图表的代码简洁易读,易于理解和使用。

  3. 高度可定制性:允许开发者对图表的各种属性进行详细的配置,包括颜色、字体、标题、坐标轴等,以满足个性化的需求。

  4. 支持交互:生成的图表具有交互功能,用户可以通过鼠标操作进行缩放、平移、数据筛选等。

  5. 与 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')

更多有趣的内容可以去官网观摩,学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值