Pandas一行代碼繪製25種美圖

大家好,我是小五🧐

今天介紹一下,如何用Pandas的一行代碼繪製 25 種美圖。

本文涉及:

單組折線圖、多組折線圖、單組條形圖、多組條形圖、堆積條形圖、水平堆積條形圖、直方圖、分面直方圖、箱圖、面積圖、堆積面積圖、散點圖、單組餅圖、多組餅圖、分面圖、hexbin圖、andrews_curves圖、核密度圖、parallel_coordinates圖、autocorrelation_plot圖、radviz圖、bootstrap_plot圖、子圖(subplot)、子圖任意排列、圖中繪製數據表格

Pandas可視化主要依賴下面兩個函數:

  • pandas.DataFrame.plot

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html?highlight=plot#pandas.DataFrame.plot

  • pandas.Series.plot

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.plot.html?highlight=plot#pandas.Series.plot

可繪製下面幾種圖,注意Dataframe和Series的細微差異:'area', 'bar', 'barh', 'box', 'density', 'hexbin', 'hist', 'kde', 'line', 'pie', 'scatter'

導入依賴包

import matplotlib.pyplot as plt 
import numpy as np
import pandas as pd
from pandas import DataFrame,Series
plt.style.use('dark_background')#設置繪圖風格

1、單組折線圖

np.random.seed(0)#使得每次生成的隨機數相同
ts = pd.Series(np.random.randn(1000), index=pd.date_range("1/1/2000", periods=1000))
ts1 = ts.cumsum()#累加
ts1.plot(kind="line")#默認繪製折線圖

2、多組折線圖

np.random.seed(0)
df = pd.DataFrame(np.random.randn(10004), index=ts.index, columns=list("ABCD"))
df = df.cumsum()
df.plot()#默認繪製折線圖

3、單組條形圖

df.iloc[5].plot(kind="bar")

4、多組條形圖

df2 = pd.DataFrame(np.random.rand(104), columns=["a""b""c""d"])
df2.plot.bar()

5、堆積條形圖

df2.plot.bar(stacked=True)

6、水平堆積條形圖

df2.plot.barh(stacked=True)

7、直方圖

df4 = pd.DataFrame(
    {
        "a": np.random.randn(1000) + 1,
        "b": np.random.randn(1000),
        "c": np.random.randn(1000) - 1,
    },
    columns=["a""b""c"],
)
df4.plot.hist(alpha=0.8)

8、分面直方圖

df.diff().hist(color="r", alpha=0.9, bins=50)

9、箱圖

df = pd.DataFrame(np.random.rand(105), columns=["A""B""C""D""E"])
df.plot.box()

10、面積圖

df = pd.DataFrame(np.random.rand(104), columns=["a""b""c""d"])
df.plot.area()

11、堆積面積圖

df.plot.area(stacked=False)

12、散點圖

ax = df.plot.scatter(x="a", y="b", color="r", label="Group 1",s=90)
df.plot.scatter(x="c", y="d", color="g", label="Group 2", ax=ax,s=90)

13、單組餅圖

series = pd.Series(3 * np.random.rand(4), index=["a""b""c""d"], name="series")
series.plot.pie(figsize=(66))

14、多組餅圖

df = pd.DataFrame(
    3 * np.random.rand(42), index=["a""b""c""d"], columns=["x""y"]
)
df.plot.pie(subplots=True, figsize=(84))

15、分面圖

import matplotlib as mpl
mpl.rc_file_defaults()
plt.style.use('fivethirtyeight')
from pandas.plotting import scatter_matrix
df = pd.DataFrame(np.random.randn(10004), columns=["a""b""c""d"])
scatter_matrix(df, alpha=0.2, figsize=(66), diagonal="kde")
plt.show()

16、hexbin圖

df = pd.DataFrame(np.random.randn(10002), columns=["a""b"])
df["b"] = df["b"] + np.arange(1000)
df.plot.hexbin(x="a", y="b", gridsize=25)

17、andrews_curves圖

from pandas.plotting import andrews_curves
mpl.rc_file_defaults()
data = pd.read_csv("iris.data.txt")
plt.style.use('dark_background')
andrews_curves(data, "Name")

18、核密度圖

ser = pd.Series(np.random.randn(1000))
ser.plot.kde()

19、parallel_coordinates圖

from pandas.plotting import parallel_coordinates
data = pd.read_csv("iris.data.txt")
plt.figure()
parallel_coordinates(data, "Name")

20、autocorrelation_plot圖

from pandas.plotting import autocorrelation_plot
plt.figure();
spacing = np.linspace(-9 * np.pi, 9 * np.pi, num=1000)
data = pd.Series(0.7 * np.random.rand(1000) + 0.3 * np.sin(spacing))
autocorrelation_plot(data)

21、radviz圖

from pandas.plotting import radviz
data = pd.read_csv("iris.data.txt")
plt.figure()
radviz(data, "Name")

22、bootstrap_plot圖

from pandas.plotting import bootstrap_plot
data = pd.Series(np.random.rand(1000))
bootstrap_plot(data, size=50, samples=500, color="grey")

23、子圖(subplot)

df = pd.DataFrame(np.random.randn(10004), index=ts.index, columns=list("ABCD"))
df.plot(subplots=True, figsize=(66))

24、子圖任意排列

df.plot(subplots=True, layout=(23), figsize=(66), sharex=False)
fig, axes = plt.subplots(44, figsize=(99))
plt.subplots_adjust(wspace=0.5, hspace=0.5)
target1 = [axes[0][0], axes[1][1], axes[2][2], axes[3][3]]
target2 = [axes[3][0], axes[2][1], axes[1][2], axes[0][3]]
df.plot(subplots=True, ax=target1, legend=False, sharex=False, sharey=False);
(-df).plot(subplots=True, ax=target2, legend=False, sharex=False, sharey=False)

25、圖中繪製數據表格

from pandas.plotting import table
mpl.rc_file_defaults()
#plt.style.use('dark_background')
fig, ax = plt.subplots(11)
table(ax, np.round(df.describe(), 2), loc="upper right", colWidths=[0.20.20.2]);
df.plot(ax=ax, ylim=(02), legend=None);

更多pandas可視化精進資料:https://pandas.pydata.org/pandas-docs/stable/user_guide/cookbook.html#cookbook-plotting

最近有啥書?

Python數據分析從入門到精通(微課視頻版) :技術講解透徹 (1)知識體系完善,從Python基礎入門,到數據處理介紹,到數據實戰分析,流程圖、各種數據可視化圖示等,簡單易學。(2)配視頻講解,打消讀者未學先怯的心理, 給初學者一個定心丸。點擊即可查看詳情!👇


點擊這裏,閱讀更多數據文章!

本文分享自微信公衆號 - 凹凸數據(alltodata)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章