python数据分析与可视化大作业成功案例

这篇文章主要介绍了python数据分析与可视化大作业成功案例,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

可视化是一种方便的观察数据的方式,可以一目了然地了解数据块。我们经常使用柱状图、直方图、饼图、箱图、热图、散点图、线状图等python基础知识小结

这些典型的图对于数据可视化是必不可少的。除了这些被广泛使用的图表外,还有许多很好的却很少被使用的可视化方法,这些图有助于完成我们的工作,下面我们看看有那些图可以进行。

图片

1、平行坐标图(Parallel Coordinate)

我们最多可以可视化 3 维数据。但是我们有时需要可视化超过 3 维的数据才能获得更多的信息。我们经常使用 PCA 或 t-SNE 来降维并绘制它。在降维的情况下,可能会丢失大量信息。在某些情况下,我们需要考虑所有特征, 平行坐标图有助于做到这一点。

图片

上面的图片。横线(平行轴)表示鸢尾花的特征(花瓣长、萼片长、萼片宽、花瓣宽)。分类是Setosa, Versicolor和Virginica。上图将该物种编码为Setosa→1,Versicolor→2,Virginica→3。每个平行轴包含最小值到最大值(例如,花瓣长度从1到6.9,萼片长度从4.3到7.9,等等)。例如,考虑花瓣长度轴。这表明与其他两种植物相比,濑蝶属植物的花瓣长度较小,其中维珍属植物的花瓣长度最高。

有了这个图,我们可以很容易地获得数据集的总体信息。数据集是什么样子的?让我们来看看。

图片

让我们用Plotly Express库[1]可视化数据。Plotly库提供了一个交互式绘图工具。

 import plotly.express as px
 df = px.data.iris()
 fig = px.parallel_coordinates(df, color="species_id", labels={"species_id": "Species",
                "sepal_width": "Sepal Width", "sepal_length": "Sepal Length",
                "petal_width": "Petal Width", "petal_length": "Petal Length", },
                              color_continuous_scale=px.colors.diverging.Tealrose,
                              color_continuous_midpoint=2)
 fig.show()

图片

除了上图以外我们还可以使用其他库,如pandas、scikit-learn和matplotlib来绘制并行坐标。

2、六边形分箱图 (Hexagonal Binning)

六边形分箱图是一种用六边形直观表示二维数值数据点密度的方法。

 ax = df.plot.hexbin(x='sepal_width', y='sepal_length', gridsize=20,color='#BDE320')

图片

我考虑了上一节的数据集来绘制上面的六边形分箱图。Pandas 允许我们绘制六边形 binning [2]。我已经展示了用于查找 sepal_width 和 sepal_length 列的密度的图。

如果仔细观察图表,我们会发现总面积被分成了无数个六边形。每个六边形覆盖特定区域。我们注意到六边形有颜色变化。六边形有的没有颜色,有的是淡绿色,有的颜色很深。根据图右侧显示的色标,颜色密度随密度变化。比例表示具有颜色变化的数据点的数量。六边形没有填充颜色,这意味着该区域没有数据点。

其他库,如 matplotlib、seaborn、bokeh(交互式绘图)也可用于绘制它。

3、等高线密度图(Contour )

二维等高线密度图是可视化特定区域内数据点密度的另一种方法。这是为了找到两个数值变量的密度。例如,下面的图显示了在每个阴影区域有多少数据点。

 import plotly.express as px
 fig = px.density_contour(df, x="sepal_width", y="sepal_length")
 fig.update_traces(contours_coloring="fill", contours_showlabels = True)
 fig.show()

图片

为了生成上面的图表,我这里使用了plotly库,因为它可以方便地绘制交互式的图表。我们这里绘制了两个变量 sepal_width 和 sepal_length 的密度。

当然,也可以使用其他库,如seaborn、matplotlib等。

4、QQ-plot

QQ plot是另一个有趣的图。QQ是Quantile - Quantile plot的缩写(Quantile/percentile是一个范围,在这个范围内数据下降了指定百分比。例如,第10个quantile/percentile表示在该范围下,找到了10%的数据,90% 超出范围)。这是一种直观地检查数值变量是否服从正态分布的方法。让我解释一下它是如何工作的。

图片

图(a)是样本分布;(b) 是标准正态分布。对于样本分布,数据范围从 10 到 100(100% 数据在 10 到 100 之间)。但对于标准正态分布,100% 的数据在 -3 到 3(z 分数)的范围内。在 QQ 图中,两个 x 轴值均分为 100 个相等的部分(称为分位数)。如果我们针对 x 和 y 轴绘制这两个值,我们将得到一个散点图。

图片

散点图位于对角线上。这意味着样本分布是正态分布。如果散点图位于左边或右边而不是对角线,这意味着样本不是正态分布的。

导入必要的库

 import pandas as pd
 import numpy as np
 import matplotlib.pyplot as plt
 import seaborn as sns

生成正态分布数据。

 np.random.seed(10)
 # Generate Univariate Observations
 gauss_data = 5 * np.random.randn(100) + 50

绘制数据点的分布。

 sns.histplot(data=gauss_data, kde=True)

图片

该图显示数据是正态分布的。我们用数据点做qq-plot来检验它是否正态分布。

 import statsmodels.api as sm
 # q-q plot
 sm.qqplot(gauss_data, line='s')
 plt.show()

图片

该图显示散点位于对角线上。所以它是正态分布的。

5、小提琴图(Violin Plot)

小提琴图与箱线图相关。我们能从小提琴图中获得的另一个信息是密度分布。简单来说就是一个结合了密度分布的箱线图。我们将其与箱线图进行比较。

在小提琴图中,小提琴中间的白点表示中点。实心框表示四分位数间距 (IQR)。上下相邻值是异常值的围栏。超出范围,一切都是异常值。下图显示了比较。

图片

让我们看看小提琴图的可视化

 import seaborn as sns
 sns.violinplot(data=df, y="sepal_width")

图片

我们还可以通过传递名称来绘制不同物种的小提琴图。

 import seaborn as sns
 sns.violinplot(data=df,x='species', y="sepal_width")

图片

还可以使用其他库,如plotly、matplotlib等来绘制小提琴图。

6、箱线图的改进版(Boxen plot)

Boxenplot 是 seaborn 库引入的一种新型箱线图。对于箱线图,框是在四分位数上创建的。但在 Boxenplot 中,数据被分成更多的分位数。它提供了对数据的更多内存。

鸢尾花数据集的 Boxenplot 显示了 sepal_width 的数据分布。

 sns.boxenplot(x=df["sepal_width"])

图片

上图显示了比箱线图更多的盒。这是因为每个框代表一个特定的分位数。

 sns.boxenplot(data=df, x="species",y='sepal_width')

图片

不同物种sepal_width的Boxenplot图。

7、点图

下图中有一些名为误差线的垂直线和其他一些连接这些垂直线的线。让我们看看它的确切含义。

图片

点图是一种通过上图中显示的点的位置来表示数值变量集中趋势的方法,误差条表示变量的不确定性(置信区间)[4]。绘制线图是为了比较不同分类值的数值变量的变异性 [4]。

让我们举一个实际的例子——

我们继续使用 seaborn 库和 iris 数据集(在平行坐标部分中提到)。

 import seaborn as sns
 sns.pointplot(data=df,x="species", y="sepal_width")

在这里插入图片描述

该图表显示了不同花的萼片宽度的变异性。我们还可以绘制多个点图。

8、分簇散点图(Swarm plot)

Swarm plot 是另一个受“beeswarm”启发的有趣图表。通过此图我们可以轻松了解不同的分类值如何沿数值轴分布 [5]。它在不重叠数据点的情况下绘制数据。但它不适用于大型数据集。

 import seaborn as sns
 sns.swarmplot(data=df,x="species", y="sepal_width")

图片

9、旭日图(Sunburst Chart)

它是圆环图或饼图的定制版本,将一些额外的层次信息集成到图中 [7]。

图片

整个图表被分成几个环(从内到外)。它保存层次结构信息,其中内环位于层次结构的顶部,外环位于较低的[7]阶。

图片

 import plotly.express as px
 df = px.data.tips()

图片

绘制旭日图

 fig = px.sunburst(df, path=['sex', 'day', 'time'], values='total_bill', color='time')
 fig.show()

图片

sunburst类的path属性提供了层次结构,其中性别位于层次结构的顶部,然后是日期和时间。

10、词云(Word Cloud)

词云图的想法非常简单。假设我们有一组文本文档。单词有很多,有些是经常出现的,有些是很少出现的。在词云图中,所有单词都被绘制在特定的区域中,频繁出现的单词被高亮显示(用较大的字体显示)。有了这个词云,我们可以很容易地找到重要的客户反馈,热门的政治议程话题等。

 import pandas as pd
 data=pd.read_csv('/work/android-games.csv')
 data.head()

图片

我们统计每个类别的数据数量

 data.category.value_counts()

图片

我们进行可视化。

 #importing the module from wordcloud library
 from wordcloud import WordCloud
 import matplotlib.pyplot as plt
 
 #creating a text from the category column by taking only the 2nd part of the category.
 text = " ".join(cat.split()[1] for cat in data.category)
 
 #generating the cloud
 word_cloud = WordCloud(collocations = False, background_color = 'black').generate(text)
 plt.imshow(word_cloud, interpolation='bilinear')
 plt.axis("off")
 plt.show()

图片

该图表显示了频率最高的所有类别。我们也可以用这个图从文本中找到经常出现的单词。

总结

数据可视化是数据科学中不可缺少的一部分。在数据科学中,我们与数据打交道。手工分析少量数据是可以的,但当我们处理数千个数据时它就变得非常麻烦。如果我们不能发现数据集的趋势和洞察力,我们可能无法使用这些数据。希望上面介绍的的图可以帮助你深入了解数据。

https://plotly.com/python/parallel-coordinates-plot/

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.hexbin.html

Hintze, V. P. A Box Plot-Density Trace Synergism. Am. Stat, (52), 181 (Open Access Journal).

seaborn.pointplot — seaborn 0.12.1 documentation (pydata.org)

seaborn.swarmplot — seaborn 0.12.1 documentation (pydata.org)

Create a sunburst chart in Office — Microsoft Support

Sunburst charts in Python (plotly.com)

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
在这里插入图片描述

👉Python必备开发工具👈

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉100道Python练习题👈

检查学习结果。
在这里插入图片描述

👉面试刷题👈

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

资料领取

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取

在这里插入图片描述

  • 24
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt是一款跨平台的C++图形用户界面应用程序开发框架,其提供了一些工具和类库,能够构建图形界面、网络、数据库、XML和数据可视化等各类应用程序。数据可视化数据分析、预测、决策等方面十分重要,而Qt也是一种很好的工具来进行数据可视化。 对于Qt的数据可视化大作业,可以从以下几个方面入手: 1. 数据的获取与处理:首先需要确定可视化的数据,根据数据来源不同,获取数据的方法也会有所不同。可以是从API、文件、数据库中获取。接着需要对数据进行处理,对于数据的缺失、异常值和重复值进行处理。 2. 界面设计:界面设计应该具有易操作性和简洁明了性的特点,可以考虑使用Qt Designer创建界面,包括图表、下拉菜单、按钮等控件,同时界面的可扩展性也要考虑到。 3. 数据的可视化:选择合适的图表类型来展示数据,如折线图、环形图、散点图、3D图等。需要对图表进行美化,如添加标题、坐标轴标签和刻度值等。 4. 交互性:可以在界面中添加一些交互性的控件,如滑动条、复选框、下拉菜单,能够增加用户对数据的掌控度和趣味性。 5. 数据的输出:完成数据可视化之后,需要将可视化结果输出。可以考虑将数据图表保存为图片或PDF格式,也可以将数据导出为Excel格式等。 在进行Qt的数据可视化大作业时,需要遵循良好的软件工程原则,包括模块化、代码复用和文档化等,同时要注意代码的可读性和可维护性,使得代码具有良好的可扩展性和稳定性。 ### 回答2: 本人设计的数据可视化大作业是采用QT技术进行实现,旨在对数据进行可视化展示。数据可视化数据分析的重要手段,能够将数据转化为图像,直观、简洁地展示数据信息,帮助人们更好地理解和分析数据。 本次作业以医疗数据为例,通过可视化展示患者的身高体重指数(BMI)、年龄、性别等信息,帮助医学研究人员分析患者群体情况,对各种疾病的发病率、筛查标准等进行研究。采用QT技术实现的优势在于其具有良好的跨平台性和界面友好性,结合数据的可视化效果,更好地满足了医学研究人员的工作需要。 在制作过程中,我使用QT中的QChart来绘制各种图表,例如:折线图、饼图等。同时结合QTableWidget控件对数据进行管理,方便用户快速选择并展示不同类别的数据。在交互体验方面,我还使用了QT提供的信号与槽机制,结合用户操作,使得用户能够自由切换不同的展示效果。 通过这次作业的制作,我不仅学习到了数据可视化技术的应用,还深刻体验到QT技术的跨平台性和方便易用性。最终,我将本次制作的QT数据可视化大作业,作为自己数据可视化学习的重要记录。 ### 回答3: 在数据可视化大作业中,使用Qt框架来进行数据可视化,可以实现一些非常强大和实用的功能。Qt提供了非常丰富的界面设计,具有跨平台特性,能够在不同的操作系统平台上进行开发和部署,灵活性和可移植性很高。 在数据可视化大作业中,我们可以使用Qt的图形界面功能来设计数据界面和图表,将数据呈现出来,通过算法和可视化方法等来分析数据的规律和特征。同时,还可以使用Qt的数据模型功能,将数据存储和管理起来,方便操作和查询。通过增加数据可视化方案,Qt在可视化方面成就非同凡响。 为了实现一个成功数据可视化,还需要考虑一些因素,例如数据的精度、数据的规模、数据的类型、数据的样本和数据的分析等方面。通过对这些因素的认真考虑和策划,我们可以设计出非常有用的、有效的和实用的数据可视化程序,为人们的日常生活和工作提供便利。 总的来说,数据可视化大作业Qt是一个既有挑战性又充满创意性的大型项目。只有对数据有良好的理解,对算法有深入的了解和掌握,才能打造出一个既实用又精美的数据可视化程序,为我们的生活和工作带来极大的便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值