在当今这个数据驱动的世界中,只有从数据中提取信息才能从中受益。数据可视化是数据分析中最直观的部分,因为它允许与数据互动。这是一种神奇的技术,可以在一瞥之间向大量人群传达信息,并从数据中创造出有趣的故事。Pandas是Python中最流行且广泛使用的数据分析工具之一。它还内置了一个绘图函数用于样本。然而,当涉及到交互式可视化时,没有前端工程技能的Python用户可能会遇到一些挑战,比如许多库,如D3、chart.js,需要一些JavaScript知识。Plotly和Cufflinks在这一点上派上了用场。
当数据量很大,企业难以从中提取决定性信息时,数据可视化在做出关键业务决策中扮演着重要角色。Plotly是一个建立在d3.js之上的图表库,由于另一个名为Cufflinks的库,可以直接与Pandas数据帧一起使用。将在这个快速教程中向展示如何使用Plotly交互式图表与Pandas数据帧。为了保持简单,将使用Jupyter Notebook(通过Anaconda Distribution安装,带有Python)和著名的泰坦尼克号数据集。
在完成数据清洗和操作后,数据分析过程的下一步是从数据中提取有意义的见解和结论,这可以通过图表和图形来实现。Python有许多库可以用于这个目的。通常只知道两个库matplotlib和seaborn。这些库包括创建折线图、饼图、条形图、箱形图等工具。可能想知道,如果已经有了matplotlib和seaborn,为什么还需要其他的数据可视化库。当第一次听说plotly和cufflinks时,脑海中也有同样的问题。
Plotly的最新版本是5.1.0,而cufflinks的是0.17.5。由于旧版本的cufflinks不支持新发布的plotly版本,因此同时更新这两个包或找到兼容的版本至关重要。在Anaconda Prompt上运行以下命令来安装plotly(或者如果使用OS或Ubuntu,则在Terminal上):
conda install -c plotly plotly
conda install -c conda-forge cufflinks-py
或者使用pip:
pip install plotly --upgrade
pip install cufflinks --upgrade
加载库。首先,将加载Pandas、Plotly和Cufflinks库。由于plotly是一个在线平台,它需要登录凭证才能在线使用。在本文中,将使用离线模式,这对于Jupyter Notebook来说已经足够了。
import pandas as pd
import cufflinks as cf
import plotly.offline
cf.go_offline()
cf.set_config_file(offline=False, world_readable=True)
加载数据集。提到将使用泰坦尼克号数据集,可以从这个获得。只使用train.csv文件。
直方图可以用来检查特征的分布,例如这里的“Age”特征。只需使用(dataframe[“列名”])语法来选择一列,然后添加iplot函数。例如,可以指定箱大小、主题、标题和轴名称。使用“help(df.iplot)”命令,可以看到iplot参数的所有参数。
df["Age"].iplot(kind="histogram", bins=20, theme="white", title="乘客年龄",xTitle='年龄', yTitle='计数')
如果想比较两个不同的分布,可以将它们作为两个不同的列进行绘制。例如,将在同一图表中绘制女性和男性乘客的年龄。
df["male_age"]=df[df["Sex"]=="male"]["Age"]
df["female_age"]=df[df["Sex"]=="female"]["Age"]
df[["male_age","female_age"]].iplot(kind="histogram", bins=20, theme="white", title="乘客年龄",xTitle='年龄', yTitle='计数')
热图可以用于多种用途,但将它们用于检查数据集中特征之间的相关性作为示例。
箱线图对于快速解释数据偏斜、异常值和四分位数范围非常有用。现在将使用箱线图来显示每个泰坦尼克号等级的“Fare”分布。
df[['Pclass', 'Fare']].pivot(columns='Pclass', values='Fare').iplot(kind='box')
散点图通常用于可视化两个数值变量之间的关系。对于“Fare”和“Age”这两个变量,将使用散点图。“Categories”允许以不同的颜色显示选定特征的变量(本例中为乘客的性别)。
df.iplot(kind="scatter", theme="white",x="Age",y="Fare", categories="Sex")
快速提醒:“categories”参数必须是字符串或float64类型的列。例如,在气泡图示例中,必须将整数类型的“Survived”列转换为float64或字符串。
可以使用气泡图同时查看多个变量之间的关系。通过plotly中的“categories”和“size”参数,可以轻松调整颜色和大小子类别。通过“text”参数,还可以指定悬停文本列。
df[['Survived']] = df[['Survived']].astype('float64', copy=False)
df.iplot(kind='bubble', x="Fare",y="Age",categories="Survived", size='Pclass', text='Name', xTitle='Fare', yTitle='Age')
条形图适合展示不同组的数据,这些组正在被相互比较。此外,它们可以堆叠起来显示不同变量的效果。将制作一个条形图来显示按性别分的存活乘客计数。
survived_sex = df[df['Survived']==1]['Sex'].value_counts()
dead_sex = df[df['Survived']==0]['Sex'].value_counts()
df1 = pd.DataFrame([survived_sex,dead_sex])
df1.index = ['Survived','Dead']
df1.iplot(kind='bar',barmode='stack', title='按性别分的生存情况')
已经尽量简化解释。希望这能让新手更容易上手plotly。Plotly还提供科学图表、3D图表、地图和动画。可以访问了解更多细节。
感谢阅读!
希望喜欢这篇文章并增加了知识。
请随时通过电子邮件与联系。
有未提及的内容或想要分享想法?请在下方留言,会回复。
关于:
Hardikkumar M. Dhaduk