Python数据分析可视化综合实例

简介: Python数据分析可视化综合实例

本期内容为大家带来Python数据分析可视化综合实例

给定素如下:

sex=["男","女"] 
df1=pd.DataFrame({ 
    "names":["student"+str(i) for i in range(1,32) ], 
    "sex":[sex[np.random.randint(2)] for i in range(31) ], 
    "python":np.random.randint(60,101,31), 
    "spark":np.random.randint(60,90,31), 
    "linux":np.random.randint(60,98,31) 
})

 

折线图


1.用折线图呈现python,spark,linux的前5名 



import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False 
df1 = pd.DataFrame({ 
    'names': [f'student{i}' for i in range(1, 48)], 
    'sex': np.random.choice(['男', '女'], 47), 
    'python': np.random.randint(50, 101, 47), 
    'spark': np.random.randint(50, 90, 47), 
    'linux': np.random.randint(50, 95, 47), 
}) 
print(df1) 
# 用折线图分别呈现Python,spark,Linux的前五名 
score1 = df1['python'].sort_values(ascending=False).head(5) 
score2 = df1['spark'].sort_values(ascending=False).head(5) 
score3 = df1['linux'].sort_values(ascending=False).head(5) 
nums = [1, 2, 3, 4, 5] 
labels = [f'第{i}名' for i in range(1, 6)] 
# 绘制Python、spark、Linux折线 
plt.plot(nums, score1, color='red', marker='o', linestyle=':') 
plt.plot(nums, score2, color='blue', marker='p', linestyle=':') 
plt.plot(nums, score3, color='green', marker='x', linestyle=':') 
plt.xticks(nums, labels)  # 设置x轴刻度及标签 
plt.ylabel('成绩')  # y轴标签 
plt.xlabel('名次')  # x轴标签 
plt.title('学生成绩分析')  # 标题 
plt.legend(['python', 'spark', 'linux'])  # 图例 
plt.show()


效果:

 

并列柱状图


2.用并列柱状图呈现总分前5名的各科成绩,横轴显示学生的姓名,纵轴显示分数,共3个图例。


df1['total'] = df1['python'] + df1['spark'] + df1['linux'] 
result1 = df1.sort_values('total', ascending=False).head(5) 
width = 0.2 
nums = np.arange(5) 
plt.bar(nums, result1['python'], color='blue', width=width) 
plt.bar(nums + width, result1['spark'], color='red', width=width) 
plt.bar(nums + width * 2, result1['linux'], color='green', width=width) 
plt.xticks(nums, result1['names']) 
plt.ylim(0, 120) 
for x, y in zip(nums, result1['python']): 
    plt.text(x, y, y, ha='center') 
for x, y in zip(nums + width, result1['spark']): 
    plt.text(x, y, y, ha='center') 
for x, y in zip(nums + width * 2, result1['python']): 
    plt.text(x, y, y, ha='center') 
plt.xlabel('学生') 
plt.ylabel('成绩') 
plt.title('学生总分top5') 
plt.legend(['python', 'spark', 'linux']) 
plt.show()


效果:




4.用并列柱状图分别呈现男生和女孩的pythonspark,linux的平均分 


result1 = df1.groupby('sex')['python', 'spark', 'linux'].mean() 
print(result1) 
w = 0.2 
nums = np.arange(2) 
plt.bar(nums, result1['python'], color='red', width=w) 
plt.bar(nums + w, result1['spark'], color='blue', width=w) 
plt.bar(nums + w * 2, result1['linux'], color='green', width=w) 
plt.xticks(nums, result1.index) 
plt.ylim(0, 120) 
for x, y in zip(nums, result1['python']): 
    plt.text(x, y, f'{round(y, 1)}分', ha='center') 
for x, y in zip(nums, result1['spark']): 
    plt.text(x + w, y, f'{round(y, 1)}分', ha='center') 
for x, y in zip(nums + w, result1['spark']): 
    plt.text(x + w, y, f'{round(y, 1)}分', ha='center') 
plt.legend(['python', 'spark', 'linux']) 
plt.title('男女生各科成绩平均分') 
plt.show()


效果

  1. 显示5个电影三天的总票房及票房趋势 (三天票房的并列柱状图,并做单日票房的数据标注). 

给定素材为:豆瓣电影数据1.csv,其中r1,r2,r3分别表示前3天的票房 

df1 = pd.read_csv('data/豆瓣电影数据1.csv') 
result1 = df1.head(5) 
print(result1.index) 
width = 0.2 
nums = np.arange(result1.shape[0]) 
plt.bar(nums, result1['r1'], color='blue', width=width) 
plt.bar(nums + width, result1['r2'], color='red', width=width) 
plt.bar(nums + width * 2, result1['r3'], color='green', width=width) 
plt.xticks(nums, result1['name']) 
for x, y in zip(nums, result1['r1']): 
    plt.text(x, y, y, ha='center') 
for x, y in zip(nums + width, result1['r2']): 
    plt.text(x, y, y, ha='center') 
for x, y in zip(nums + width * 2, result1['r3']): 
    plt.text(x, y, y, ha='center') 
plt.xlabel('学生') 
plt.ylabel('成绩') 
plt.title('学生总分top5') 
plt.legend(['第一天', '第二天', '第三天']) 
plt.show()


效果

 

堆积折线图


 

显示各个手机各个份的总销量和销量趋势,使用堆积折线图 

df1 = pd.read_csv('data/手机年销量.txt') 
print(df1) 
plt.xlabel('品牌') 
plt.ylabel('销量') 
plt.ylim(0, 1500) 
plt.title('手机总销量趋势图') 
plt.stackplot(df1['品牌'], df1['6月'], df1['7月'], df1['8月'], df1['9月']) 
plt.legend(['6月', '7月', '8月', '9月']) 
plt.show()


效果


 

饼图


使用饼图显示每个城市的学生的人数 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体
plt.rcParams["font.size"] = 10  # 设置字号
plt.rcParams["axes.unicode_minus"] = False  # 正常显示负号
sex = ["男", "女"]
address = ["北京", "上海", "襄阳"]
df1 = pd.DataFrame({
    "names": ["student" + str(i) for i in range(1, 32)],
    "sex": [sex[np.random.randint(2)] for i in range(31)],
    "address": [address[np.random.randint(3)] for i in range(31)],
    "python": np.random.randint(60, 101, 31),
    "spark": np.random.randint(60, 90, 31),
    "linux": np.random.randint(60, 98, 31)
})
# 使用饼图显示每个城市的学生的人数
data1 = df1.groupby('address')['sex'].count()
plt.pie(data1.values, labels=data1.index,
        explode=[0, 0.1, 0],
        autopct='%.2f%%')
plt.legend(data1.index)
plt.title('各城市学生人数占比')
plt.show()


 

散点图


随机生成大数据专业200名学生的性别,姓名,身高,体重,绘制身高和体重分布的散点图,女生数据用红色绘制,男生数据用蓝色绘制 

size = 200 
df1 = pd.DataFrame({ 
    'name': [f'student{i}' for i in range(1, size + 1)], 
    'sex': np.random.choice(['男', '女'], size), 
    'height': np.random.randint(150, 200, size), 
    'width': np.random.randint(40, 100, size) 
}) 
print(df1.head()) 
men = df1[df1['sex'] == '男'] 
women = df1[df1['sex'] == '女'] 
plt.scatter(men['height'], men['width'], color='red') 
plt.scatter(women['height'], women['width'], color='blue', cmap='viridis') 
plt.xlabel('身高(单位:CM)') 
plt.ylabel('体重:(单位:KG)') 
plt.title('男女生身高体重分布图') 
plt.legend(['男', '女']) 
plt.show()



 

雷达图


使用雷达图绘制小明各科成绩

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties  
# 加载中文字体
font = FontProperties(fname="./data/SimHei.ttf", size=14)  
# 数据准备
labels=np.array(["英语","数学","语文","化学","物理","体育"])
stats=[90, 80, 76, 70, 75, 88]
# 画图数据准备,角度、状态值
angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)
stats=np.concatenate((stats,[stats[0]]))
angles=np.concatenate((angles,[angles[0]]))
# 画蜘蛛图
fig = plt.figure(figsize = (10,6))
ax = fig.add_subplot(111, polar=True)   
ax.plot(angles, stats, 'o-', linewidth=2)
ax.fill(angles, stats, alpha=0.25)
# 设置中文标题和维度名称
ax.set_thetagrids(angles * 180/np.pi, labels, FontProperties=font)
ax.set_title("小明各科成绩",FontProperties = font, size = 20)
plt.show()


 

热力图


使用热力图绘制学生各科成绩

import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.size'] = '20'
plt.rcParams['font.sans-serif'] = ['SimHei']
labels=np.array(["英语","数学","语文","化学","物理","体育"])
names = ["李雷","韩梅梅","汤姆","安"]
scores=np.array([[90, 80, 76, 70, 75, 88],[70, 60, 73, 80, 95, 55],
                 [70, 60, 56, 30, 65, 95],[50, 40, 66, 75, 74, 98]])
fig = plt.figure(0,figsize = (10,6))
plt.matshow(scores,fignum = 0)
plt.xticks(ticks = range(len(labels)),labels = labels)
plt.yticks(ticks = range(len(names)),labels = names)
# 绘制⽂本
for i in range(len(names)):
    for j in range(len(labels)):
        plt.text(j, i, round(scores[i, j],1), ha="center", va="center", color='r')
plt.colorbar()
plt.show()



相关文章
|
25天前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
6天前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
53 5
|
29天前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
83 4
数据分析的 10 个最佳 Python 库
|
19天前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
80 7
|
1月前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
|
1月前
|
存储 数据可视化 数据挖掘
Python数据分析项目:抖音短视频达人粉丝增长趋势
Python数据分析项目:抖音短视频达人粉丝增长趋势
|
1月前
|
数据采集 存储 数据可视化
Python数据分析:揭秘"黑神话:悟空"Steam用户评论趋势
Python数据分析:揭秘"黑神话:悟空"Steam用户评论趋势
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第42天】本文将介绍如何使用Python进行数据分析和可视化。我们将从数据导入、清洗、探索性分析、建模预测,以及结果的可视化展示等方面展开讲解。通过这篇文章,你将了解到Python在数据处理和分析中的强大功能,以及如何利用这些工具来提升你的工作效率。
|
1月前
|
数据采集 数据可视化 数据挖掘
掌握Python数据分析,解锁数据驱动的决策能力
掌握Python数据分析,解锁数据驱动的决策能力
|
4月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
93 2