json 数据 生成 图表_Python数据分析:手把手教你用Pandas生成可视化图表
一:
Pandas是什么?
Pandas是一個(gè)強(qiáng)大的分析結(jié)構(gòu)化數(shù)據(jù)的工具集;它的使用基礎(chǔ)是Numpy(提供高性能的矩陣運(yùn)算);用于數(shù)據(jù)挖掘和數(shù)據(jù)分析,同時(shí)也提供數(shù)據(jù)清洗功能。
利器之一:DataFrame
DataFrame是Pandas中的一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),包含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾型等),DataFrame即有行索引也有列索引,可以被看做是由Series組成的字典。
利器之一:Series
它是一種類似于一維數(shù)組的對(duì)象,是由一組數(shù)據(jù)(各種NumPy數(shù)據(jù)類型)以及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成。僅由一組數(shù)據(jù)也可產(chǎn)生簡(jiǎn)單的Series對(duì)象。
以下為大家說明下常用的圖
一、線型圖?
對(duì)于pandas的內(nèi)置數(shù)據(jù)類型,Series 和 DataFrame 都有一個(gè)用于生成各類 圖表 的 plot 方法。默認(rèn)情況下, 它們所生成的是線型圖。其實(shí)Series和DataFrame上的這個(gè)功能只是使用matplotlib庫的plot()方法的簡(jiǎn)單包裝實(shí)現(xiàn)。參考以下示例代碼 -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10,4),index=pd.date_range('2018/12/18',
? ?periods=10), columns=list('ABCD'))
df.plot()
Python
執(zhí)行上面示例代碼,得到以下結(jié)果 -
如果索引由日期組成,則調(diào)用gct().autofmt_xdate()來格式化x軸,如上圖所示。
我們可以使用x和y關(guān)鍵字繪制一列與另一列。
s = Series( np. random. randn( 10). cumsum(), index= np. arange( 0, 100, 10))
s. plot()
pandas 的大部分繪圖方法都有 一個(gè) 可選的ax參數(shù), 它可以是一個(gè) matplotlib 的 subplot 對(duì)象。這使你能夠在網(wǎng)格 布局 中 更為靈活地處理 subplot 的位置。DataFrame的plot 方法會(huì)在 一個(gè) subplot 中為各列繪制 一條 線, 并自動(dòng)創(chuàng)建圖例( 如圖所示):
df = DataFrame( np. random. randn( 10, 4). cumsum( 0), ...: columns=[' A', 'B', 'C', 'D'], index= np. arange( 0, 100, 10))?
df. plot()?
二、柱狀圖?
在生成線型圖的代碼中加上 kind=' bar'( 垂直柱狀圖) 或 kind=' barh'( 水平柱狀圖) 即可生成柱狀圖。這時(shí),Series 和 DataFrame 的索引將會(huì)被用 作 X( bar) 或 (barh)刻度:?
In [59]: fig, axes = plt. subplots( 2, 1)?
In [60]: data = Series( np. random. rand( 16), index= list(' abcdefghijklmnop'))?
In [61]: data. plot( kind=' bar', ax= axes[ 0], color=' k', alpha= 0. 7)?
Out[ 61]: < matplotlib. axes. AxesSubplot at 0x4ee7750>?
In [62]: data. plot( kind=' barh', ax= axes[ 1], color=' k', alpha= 0.
對(duì)于 DataFrame, 柱狀 圖 會(huì) 將 每一 行的 值 分為 一組, 如圖 8- 16 所示:?
In [63]: df = DataFrame( np. random. rand( 6, 4), ...: index=[' one', 'two', 'three', 'four', 'five', 'six'], ...: columns= pd. Index([' A', 'B', 'C', 'D'], name=' Genus'))?
In [64]: df?
Out[ 64]:?
Genus?
? ? ? ? ? A? ? ? ? ?B? ? ? ? ?C? ? ? ? ?D?
one 0. 301686 0. 156333 0. 371943 0. 270731?
two 0. 750589 0. 525587 0. 689429 0. 358974?
three 0. 381504 0. 667707 0. 473772 0. 632528?
four 0. 942408 0. 180186 0. 708284 0. 641783?
five 0. 840278 0. 909589 0. 010041 0. 653207?
six 0. 062854 0. 589813 0. 811318 0. 060217?
In [65]: df. plot( kind=' bar')
三、條形圖
現(xiàn)在通過創(chuàng)建一個(gè)條形圖來看看條形圖是什么。條形圖可以通過以下方式來創(chuàng)建 -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.bar()
Python
執(zhí)行上面示例代碼,得到以下結(jié)果 -
要生成一個(gè)堆積條形圖,通過指定:pass stacked=True -
import pandas as pd
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.bar(stacked=True)
Python
執(zhí)行上面示例代碼,得到以下結(jié)果 -
要獲得水平條形圖,使用barh()方法 -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.barh(stacked=True)
P
四、直方圖
可以使用plot.hist()方法繪制直方圖。我們可以指定bins的數(shù)量值。
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':
np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
df.plot.hist(bins=20)
Python
執(zhí)行上面示例代碼,得到以下結(jié)果 -
要為每列繪制不同的直方圖,請(qǐng)使用以下代碼 -
import pandas as pd
import numpy as np
df=pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':
np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
df.hist(bins=20)
Python
執(zhí)行上面示例代碼,得到以下結(jié)果 -
五、箱型圖
Boxplot可以繪制調(diào)用Series.box.plot()和DataFrame.box.plot()或DataFrame.boxplot()來可視化每列中值的分布。
例如,這里是一個(gè)箱形圖,表示對(duì)[0,1)上的統(tǒng)一隨機(jī)變量的10次觀察的五次試驗(yàn)。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
df.plot.box()
Python
執(zhí)行上面示例代碼,得到以下結(jié)果 -
六、塊型圖
可以使用Series.plot.area()或DataFrame.plot.area()方法創(chuàng)建區(qū)域圖形。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot.area()
Python
執(zhí)行上面示例代碼,得到以下結(jié)果 -
七、散點(diǎn)圖
可以使用DataFrame.plot.scatter()方法創(chuàng)建散點(diǎn)圖。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])
df.plot.scatter(x='a', y='b')
Python
執(zhí)行上面示例代碼,得到以下結(jié)果 -
八、餅狀圖
餅狀圖可以使用DataFrame.plot.pie()方法創(chuàng)建。
import pandas as pd
import numpy as np
df = pd.DataFrame(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], columns=['x'])
df.plot.pie(subplots=True)
Python
執(zhí)行上面示例代碼,得到以下結(jié)果 -
總結(jié)
以上是生活随笔為你收集整理的json 数据 生成 图表_Python数据分析:手把手教你用Pandas生成可视化图表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 散点图_Python绘制散
- 下一篇: python 删除变量_DAY1-ste