Python 中使用不同图表进行数据可视化?
Python 提供了各种易于使用的库用于数据可视化。好消息是这些库可以处理小数据集或大数据集。
一些最常用的用于数据可视化的 Python 库包括:
Matplotlib
Pandas
Plotly
Seaborn
下面我们将针对一组固定数据绘制不同类型的可视化图表,以便更好地分析这些数据。
我们将分析以下数据集,并通过不同的图表进行可视化:
国家或地区 | 年份 | 变量 | 值 |
---|---|---|---|
印度 | 2019 | 中等 | 1368737.513 |
印度 | 2019 | 高 | 1378419.072 |
印度 | 2019 | 低 | 1359043.965 |
印度 | 2019 | 恒定生育率 | 1373707.838 |
印度 | 2019 | 即时替代 | 1366687.871 |
印度 | 2019 | 零迁移 | 1370868.782 |
印度 | 2019 | 恒定死亡率 | 1366282.778 |
印度 | 2019 | 无变化 | 1371221.64 |
印度 | 2019 | 势头 | 1367400.614 |
基本绘图
让我们创建一些基本图表:线形图、散点图和直方图
线形图
线形图是一种绘制图表,其中绘制一条线来指示一组特定的 x 和 y 值之间的关系。
import matplotlib.pyplot as plt Year = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019] India_Population = [1173108018,1189172906,1205073612,1220800359,1266344631,1309053980,1324171354,1339180127,1354051854,1368737513] plt.plot(Year, India_Population) plt.show()
输出
散点图
或者,您可能希望将数量绘制为数据点中的 2 个位置。
考虑与线形图相同的数据,要创建散点图,我们只需要修改上面代码中的一行:
plt.plot(Year, India_Population,'o')
输出
直方图
直方图在科学应用中非常常用,并且您很有可能需要在某些时候绘制它们。它们对于绘制分布非常有用。
import pandas as pd import matplotlib.pyplot as plt data = [ ['India', 2019, 'Medium', 1368737.513], ['India', 2019, 'High', 1378419.072], ['India', 2019, 'Low', 1359043.965], ['India', 2019, 'Constant fertility', 1373707.838], ['India', 2019,'Instant replacement', 1366687.871], ['India', 2019, 'Zero migration', 1370868.782], ['India', 2019,'Constant mortality', 1366282.778], ['India', 2019, 'No change', 1371221.64], ['India', 2019, 'Momentum', 1367400.614],] df = pd.DataFrame(data, columns = ([ 'Country or Area', 'Year(s)', 'Variant', 'Value'])) df.hist() plt.show()
输出
饼图
import numpy as np import matplotlib.pyplot as plt n = 25 Z = np.ones(n) Z[-1] *= 2.5 plt.axes([0.05, 0.05, 0.95, 0.95]) plt.pie(Z, explode = Z*.05, colors = ['%f' % (i/float(n)) for i in range(n)], wedgeprops = {"linewidth": 1, "edgecolor": "green"}) plt.gca().set_aspect('equal') plt.xticks([]), plt.yticks([]) plt.show()
输出
极坐标图
代码
import numpy as np import matplotlib.pyplot as plt ax = plt.axes([0.5,0.05,0.95,0.95], polar=True) N = 25 theta = np.arange(0.0, 2.5*np.pi, 2.5*np.pi/N) radii = 10*np.random.rand(N) width = np.pi/4*np.random.rand(N) bars = plt.bar(theta, radii, width=width, bottom=0.0) for r,bar in zip(radii, bars): bar.set_facecolor( plt.cm.jet(r/10.)) bar.set_alpha(0.5) ax.set_xticklabels([]) ax.set_yticklabels([]) plt.show()
输出
广告