それは、データの可視化グラフィックに来るとき、私たちが最初に考えたことができますmatplotlibのライブラリー、でなければなりません
axes
(このようなオブジェクトなどのような異なる描画メソッドを呼び出しますaxes.plot()
)。
データ解析は、パンダのライブラリを提供するように使用されるSeries
DataFrame
オブジェクトのタイプなどを、我々が(例えばを描画するためのターゲットを呼び出すことができますSeries.plot()
)。
この記事では、ライブラリと描画の類似点とそれらの違いとの関連を説明しています。
1.協会
- パンダライブラリが提供する
Series
DataFrame
ようなmatplotlibのペイントパラメータへのデータ・ソースとして使用することができるように、オブジェクトの種類とaxes.plot(Series)
- 図面のメソッドを呼び出すことができることなど、パンダを、オブジェクト
Series.plot(kind='line')
が、最終的な分析でmatplotlibの関連パンダが自動的に生成する助けているaxes
オブジェクトを。 - パンダたちは、指定のマップの裏から出て描くことができます
axes
よう、オブジェクトSeries.plot(kind='line', ax=ax1)
破線でこの写真を撮ったax1
オブジェクト上。
描画I描画matplotlibのパンダを使用して次の2つの方法が描くの同じ部分多くの子供たちチャート
matplotlibの方法:
import matplotlib.pyplot as plt
from pandas import Series
data = Series([1.47,1.62,1.78,1.94,2.38,2.60],index=['2012','2013','2014','2015','2016','2017'])
#实例化fig1对象
fig1=plt.figure(figsize=(8,8),facecolor='w')
#实例化ax对象
ax1 = fig1.add_subplot(2,2,1)
ax2 = fig1.add_subplot(2,2,2)
ax3 = fig1.add_subplot(2,1,2)
#ax对象画图
#画ax1
ax1.plot(data)#注意对象名是ax1,它是matplotlib中的axes对象类型
ax1.set_title('line chart')
ax1.set_xlabel('Year')
ax1.set_ylabel('Income')
#画ax2
ax2.boxplot(data)
ax2.set_xticks([])
ax2.set_title('box plot')
ax2.set_xlabel('2012~2017')
ax2.set_ylabel('Income')
#画ax3
ax3.bar(data.index, data)
ax3.set_title('bar chart')
ax3.set_xlabel('Year')
ax3.set_ylabel('Income')
#设置fig1标题
fig1.suptitle('Using matplotlib')
パンダ方法:
import matplotlib.pyplot as plt
from pandas import Series
data = Series([1.47,1.62,1.78,1.94,2.38,2.60],index=['2012','2013','2014','2015','2016','2017'])
#实例化fig1对象
fig2=plt.figure(figsize=(8,8),facecolor='w')
#实例化ax对象
ax4 = fig2.add_subplot(2,2,1)
ax5 = fig2.add_subplot(2,2,2)
ax6 = fig2.add_subplot(2,1,2)
#用pandas绘图并将图像回传给ax对象
#画ax4
data.plot(kind='line',ax=ax4)#注意对象名是data,它是Pandas中的Series对象类型
ax4.set_title('line chart')
ax4.set_xlabel('Year')
ax4.set_ylabel('Income')
#画ax5
data.plot(kind='box',ax=ax5)
ax5.set_xticks([])
ax5.set_title('box plot')
ax5.set_xlabel('2012~2017')
ax5.set_ylabel('Income')
#画ax6
data.plot(kind='bar',ax=ax6)
ax6.set_title('bar chart')
ax6.set_xlabel('Year')
ax6.set_ylabel('Income')
#设置fig2标题
fig2.suptitle('Using Pandas')
上記の2つの例は、図面で見ることができる、との通話はパンダmatplotlibのは、同じ効果を達成するために何度も描画呼び出し
2.異なる点
慎重に二つの文のヒストグラム解析を描画ax3.bar(data.index, data)
してdata.plot(kind='bar',ax=ax6)
、コールを見つけるax3
描画するときbar()
の方法を二つの引数があるdata.index
とdata
、それぞれ、このチャートのカテゴリとy軸の高さのx軸は。
パンダは、図面で、我々はのみを使用する場合やdata
、フロント上のオブジェクトを、それが自動的に認識することができdata
内部をindex
とvalue
。
从上面也可以看出来,对于用Series
DataFrame
这些用Pandas对象封装的多维的数据,调用Pandas绘图会有更方便和更好的支持。
下面再举一例:
我们有一个DataFrame类型的人员信息表格,每一行包含一个人的性别,收入等信息。现在我要按照性别分类,画出女性的收入的箱线图和男性收入的箱线图:
import pandas as pd
df = pd.read_csv('Data/bank-data.csv',index_col=0)
df
age | sex | region | income | married | children | car | save_act | current_act | mortgage | pep | |
---|---|---|---|---|---|---|---|---|---|---|---|
id | |||||||||||
ID12101 | 48 | FEMALE | INNER_CITY | 17546.00 | NO | 1 | NO | NO | NO | NO | YES |
ID12102 | 40 | MALE | TOWN | 30085.10 | YES | 3 | YES | NO | YES | YES | NO |
ID12103 | 51 | FEMALE | INNER_CITY | 16575.40 | YES | 0 | YES | YES | YES | NO | NO |
ID12104 | 23 | FEMALE | TOWN | 20375.40 | YES | 3 | NO | NO | YES | NO | NO |
ID12105 | 57 | FEMALE | RURAL | 50576.30 | YES | 0 | NO | YES | NO | NO | NO |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
ID12696 | 61 | FEMALE | INNER_CITY | 47025.00 | NO | 2 | YES | YES | YES | YES | NO |
ID12697 | 30 | FEMALE | INNER_CITY | 9672.25 | YES | 0 | YES | YES | YES | NO | NO |
ID12698 | 31 | FEMALE | TOWN | 15976.30 | YES | 0 | YES | YES | NO | NO | YES |
ID12699 | 29 | MALE | INNER_CITY | 14711.80 | YES | 0 | NO | YES | NO | YES | NO |
ID12700 | 38 | MALE | TOWN | 26671.60 | NO | 0 | YES | NO | YES | YES | YES |
600 rows × 11 columns
如果要用matplotlib绘图的话,就必须对DataFrame进行有条件的筛选切片,选出来所有女性的income
列和男性的income
列,然后再画箱线图:
fig7 = plt.figure(figsize=(6,6),facecolor='w')
ax7 = plt.axes()
ax7.boxplot( (df.loc[df['sex']=='FEMALE', 'income'], df.loc[df['sex']=='MALE', 'income']),
labels=('FEMALE','MALE'))
ax7.grid()
如果使用Pandas绘图的话,只需以df
作为对象放在前面,调用boxplot()
方法,并将'income',by='sex'
填入参数里即可,相当于是Pandas自动帮你切片出income
这一列,并以sex
归类聚合了,比调用matplotlib方便不少,也直观很多:
fig8 = plt.figure(figsize=(6,6),facecolor='w')
ax8 = plt.axes()
df.boxplot('income', by='sex',ax=ax8)#对于多类别,需要聚合的数据,用pandas调用绘图要比axex调用绘图来得方便
3.总结
ほとんどの場合、我々は、同じ機能を実現するためにパンダmatplotlibの描画やグラフィックスを選択することができます、だけでなく、密接にそれらの間のリンク。
いくつかの多次元データパンダパッケージ(例えば内DataFrame
)、図は、集計データとしてマニュアルスライス、トラブルの必要性を排除し、パンダ、より良いサポートを呼び出すことがより便利であろう。
便利な検索、ああ、私はどんな質問が議論するために正しい私を喜ば持って、あなたは私を許しを願って共有ポイントのようなコメントをねたむません。
CC-BY-SA 4.0のプロトコルに基づき、転載を歓迎
(に行く?ブログは疲れ私ステーションBの男?)