大数据可视化实验(八):大数据可视化综合实训

目录

一、实验目的... 1

二、实验环境... 1

三、实验内容... 1

1)Python纵向柱状图实训... 1

2)Python水平柱状图实训... 3

3)Python多数据并列柱状图实训.. 3

4)Python折线图实训... 4

5)Python直方图实训... 5

6)机器学习中的可视化应用... 6

四、思考问题... 8

五、总结与心得体会... 8

一、实验目的

掌握python工具,能够进行数据可视化;

掌握商业案例中的数据分析与数据可视化

二、实验环境

硬件:微型图像处理系统,

包括:主机, PC机;

操作系统:Windows 11        

应用软件:Jupyter Notebook, pycharm

数字图像处理软件:Excel/Python

三、实验内容

1)Python纵向柱状图实训

为了显示男女爱好的人数分布,本实验使用Python绘制纵向柱状图实现数据可视化。编写以下代码:

import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=15)
plt.title("男女爱好人数分布图"); #图标题
num = np.array([14325, 9403, 13227, 18651])
ratio = np.array([0.75, 0.6, 0.22, 0.1])
men = num * ratio
women = num * (1-ratio)
x = ['足球','游泳','看剧','逛街']
width = 0.5
idx = np.arange(len(x))
plt.bar(idx, men, width, color='red', label='男性用户')
plt.bar(idx, women, width, bottom=men, color='gray', label='女性用户'#这一块可设置bottom,top,如果是水平放置的,可以设置right或者left
plt.xlabel('应用类别')
plt.ylabel('男女分布')
plt.xticks(idx+width/2, x, rotation=40)
#bar图上显示数字
for a,b in zip(idx,men):
    plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=12)
for a,b,c in zip(idx,women,men):
    plt.text(a, b+c+0.5, '%.0f' % b, ha='center', va= 'bottom',fontsize=12)
plt.legend()
plt.show()

运行结果如下,可以看出男性的爱好多数为足球和游泳,女生的爱好多数为看剧和逛街:

2)Python水平柱状图实训

为了绘制水平柱状图,编写以下代码:

import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=15)
# 假设我们有一组数据,表示不同的类别的值
categories = ['类别 A', '类别 B', '类别 C', '类别 D', '类别 E']
values = [20, 35, 30, 10, 25]

# 创建水平柱状图
plt.barh(categories, values, color='skyblue')

# 添加标签和标题
plt.xlabel('')
plt.ylabel('类别')
plt.title('水平柱状图实训')

# 可选:显示每个条形上方的值
for index, value in enumerate(values):
    plt.text(value, index, str(value))

# 显示图形
plt.show()

运行结果如下:

3)Python多数据并列柱状图实训

本实验展示了不同的专业在不同学校的招收人数分布图情况。编写以下代码:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams[ 'font.sans-serif'] =[ 'Microsoft YaHei'] #设置字体
plt.title("不同学校专业招生人数分布图"); #图标题
x=np.arange(5)
y=[400,170,160,90,50]
y1=[300,180,150,70,90]
bar_width=0.5
tick_label=["计算机","机械","电子","管理","物理"]
plt.bar(x,y,bar_width,color="r",align="center",label="学校A")
plt.bar(x+bar_width,y1,bar_width,color="y",align="center",label="学校B")
plt.xlabel("专业")
plt.ylabel("招生人数")
plt.xticks(x+bar_width/2,tick_label)
plt.legend()
plt.show()

根据结果显示,学校a和学校b均在计算机专业招收人数最多,具体的情况如下图:

4)Python折线图实训

本实验绘制2019年1月~2019年12月的房价变化折线图,编写以下代码:

import matplotlib.pyplot as plt
plt.rcParams[
'font.sans-serif'] =[ 'Microsoft YaHei'] #设置字体
x1 = ['2019-01', '2019-02', '2019-03', '2019-04', '2019-05', '2019-06', '2019-07', '2019-08',
     
'2019-09', '2019-10', '2019-11', '2019-12']
y1 = [
9700, 9800, 9900, 12000, 11000, 12400, 13000, 13400, 14000, 14100, 13900, 13700]
plt.figure(
figsize=(10, 8))
# 标题
plt.title("房价变化")
plt.plot(x1, y1,
label='房价变化', linewidth=2, color='r', marker='o',
        
markerfacecolor='blue', markersize=10)
# 横坐标描述
plt.xlabel('月份')
# 纵坐标描述
plt.ylabel('房价')
for a, b in zip(x1, y1):
    plt.text(a, b, b,
ha='center', va='bottom', fontsize=10)
plt.legend()
plt.show()

从结果可以看出,在2019年1月的时候房价最低,在2019年12月的时候,房价最高整体呈上升趋势,其中在2019年5月的时候下降。运行结果如下:

5)Python直方图实训

本实验绘制正态分布直方图,图的值表示当前值的概率密度,为了方便信息展示只展示-4到4的概率密度,编写以下代码:

import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=15)
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
#
生成一个随机样本数据集
#
假设我们有一个正态分布的随机样本
data = np.random.normal(loc=0, scale=1, size=1000)

# 创建直方图
# bins
参数定义了直方图的箱数
# density
参数设置为 True,可以展示概率密度而不是频率
plt.hist(data, bins=30, density=True, alpha=0.7, color='blue', edgecolor='black')

# 设置直方图的标题和坐标轴标签
plt.title('正态分布直方图')
plt.xlabel('')
plt.ylabel('概率密度')

# 可选:显示直方图的均值和标准差
mean = np.mean(data)
std_dev = np.std(data)
plt.text(60, 0.0075, f'Mean: {mean:.2f}')
plt.text(60, 0.005, f'Std Dev: {std_dev:.2f}')

# 显示图形
plt.show()

运行结果如下:

6)机器学习中的可视化应用

在机器学习中,可视化是一个重要的工具,它可以帮助我们理解数据的特征、模型的性能以及数据点之间的关系。以下是一个简单的Python代码示例,展示了如何在机器学习中应用可视化。编写以下代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
import seaborn as sns

# 创建一个简单的二分类数据集
X, y = make_classification(n_samples=100, n_features=2, n_redundant=0, n_informative=2,
                           random_state=1, n_clusters_per_class=1)

# 使用逻辑回归模型
model = LogisticRegression()
model.fit(X, y)

# 绘制决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01),
                     np.arange(y_min, y_max, 0.01))

Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.figure(figsize=(10, 6))
plt.contourf(xx, yy, Z, alpha=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, s=20, edgecolor='k')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Decision Boundary using Logistic Regression')
plt.show()

这段代码首先导入了所需的库,然后创建了一个简单的二分类数据集。接着,使用LogisticRegression模型进行拟合。

在绘制决策边界的部分,我们首先定义了x和y的最小值和最大值,然后创建了一个网格来覆盖整个数据点的范围。使用模型在这些网格点上的预测结果来填充这个区域,从而绘制出决策边界。

最后,使用plt.scatter绘制了原始数据点,并用不同的颜色表示不同的类别。plt.contourf用于绘制决策边界的填充图。运行结果如下:

四、思考问题

Python软件功能强大,除了上述要实现的功能,大家可以自己进行扩展。

五、总结与心得体会

在完成上述的可视化制作实验后,我有以下几点心得体会:

  1. 理解数据分布:通过制作直方图和折线图,我更好地理解了数据的分布情况和随时间的变化趋势。直方图特别适合展示连续数据的分布,而折线图则能够清晰地展示数据随时间的变化。
  2. 比较不同类别:纵向柱状图和水平柱状图都是比较不同类别之间数值大小的有效工具。我学会了如何根据需要选择使用纵向或水平柱状图,这取决于我希望强调的信息和图表的布局。
  3. 并列柱状图的挑战:在制作多数据并列柱状图时,我意识到需要仔细选择颜色和标签,以确保每个数据集都能被清晰地区分和理解。
  4. 技术实现:通过这些实验,我加深了对matplotlib和seaborn库的了解,学会了如何使用这些工具来创建各种图表。我也认识到了代码的可读性和模块化设计的重要性,这使得代码更易于维护和更新。
  5. 数据可视化的重要性:我了解到,良好的数据可视化可以帮助观众快速抓住数据的关键信息。图表的清晰度和准确性对于有效传达分析结果至关重要。
  6. 机器学习可视化的洞察:在机器学习项目中,可视化不仅用于展示数据,还可以用于展示模型的决策过程,如决策边界。这有助于理解模型是如何工作的,以及它在特定情况下可能的优缺点。
  7. 迭代与改进:在实验过程中,我学会了如何根据反馈不断迭代和改进我的图表。一个好的图表往往需要多次修改,包括调整颜色、字体大小、标签和布局。
  8. 工具的局限性:我也意识到了可视化工具的局限性。例如,某些类型的数据或分布可能不适合用柱状图或直方图来展示。因此,选择最合适的图表类型来传达特定的信息是一项重要的技能。
  9. 注释和解释:我学会了在图表中添加适当的注释和解释,这对于使图表自解释非常重要。这包括轴标签、图例、标题和任何必要的文本说明。
  10. 未来方向:最后,我意识到数据可视化是一个不断发展的领域,总有新的技术和方法出现。我计划继续学习,以便能够利用最新的工具和技术来提高我的可视化技能。
  11. 通过这些实验,我不仅提升了我的技术技能,而且对如何有效地传达数据信息有了更深刻的理解。这些经验对我的数据科学职业生涯将是宝贵的资产。

大数据实训是一门综合实训课程,主要涉及到大数据的爬取、存储、分析和可视化。其中,Python是一种高级编程语言,被广泛应用于数据爬取、处理和分析的领域。 在课程中,我们会使用Python来编写爬虫程序,从股票相关的网站或API中获取股票数据。通过分析网站结构和数据接口,我们可以使用Python的各种库和框架来获取股票历史交易数据、实时行情数据等。 一旦我们成功获取了股票数据,我们可以使用Hive这个大数据存储和分析工具来存储和处理这些数据。Hive是基于Hadoop平台的数据仓库工具,可以将结构化和半结构化的数据存储在分布式文件系统中,并使用类SQL语言进行查询和分析。 通过Hive,我们可以对爬取到的股票数据进行各种数据处理和分析操作,例如计算股价涨跌幅、交易量统计、计算股票均线指标等。Hive的强大功能和灵活性使得我们可以根据自己的需求和兴趣来进行数据分析,并从中发现有价值的股票市场信息。 为了更好地展示和传达我们的数据分析结果,课程中还会涉及到可视化工具。可视化是将数据以图表、图形等形式呈现出来,使得数据更具有直观性和易懂性。Python中有很多强大的可视化库和工具,例如Matplotlib、Seaborn和Plotly等,可以帮助我们将股票数据进行可视化展示。 总而言之,大数据实训课程中通过使用Python进行股票数据的爬取、使用Hive进行数据分析和使用可视化工具展示结果,帮助我们掌握大数据处理和分析的技能,同时也使我们能够更好地理解和利用股票市场的信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值