1. 程式人生 > >python pandas+matplotlib 簡化資料視覺化

python pandas+matplotlib 簡化資料視覺化

一、pandas中的繪圖函式

1.series繪製圖像

# 準備一個Series
s = Series(np.random.randn(10),index=np.arange(10,110,10))
# 最簡單的畫個圖
s.plot()
plt.show()

在這裡插入圖片描述

2.DataFrame進行繪圖

# 準備一個數據
df = DataFrame(np.random.randn(10,5),columns=list('ABCDE'),index=np.arange(10)*10)

要想將df中的每一列的資料都畫出來,有兩種方法:

(1)使用matplotlib 中的方法

for
each in df: df[each].plot() # each是dataframe的列明 plt.show

(2)直接使用pandas+matplotlib的方法

#直接使用dataframe的方法,圖例會自動選擇一個放得下的位置取放置
df.plot()
plt.show()

在這裡插入圖片描述

二、畫各種圖形

1.條形圖、柱狀圖

fig,axes = plt.subplots(2,1)
# print(plt.subplots(2,1))
s1 = Series(np.random.randn(8),index=list('ABCDEFGH'))
s1.plot(
kind='bar',ax=axes[0],alpha=0.5) #第一塊211 s1.plot(kind='barh',ax=axes[1],alpha=0.5) #第二塊212 plt.show()

在這裡插入圖片描述

2.直方圖

df2 = pd.read_excel('excel/pandas-matplotlib.xlsx','Sheet1')
fig = plt.figure()
ax = fig.add_subplot(111)
ax.hist(df2['Age'],bins=12)
plt.xlabel('年齡')
plt.ylabel('員工')
plt.title('年齡分佈')
plt.
show()

在這裡插入圖片描述

3.箱線圖

df2 = pd.read_excel('excel/pandas-matplotlib.xlsx','Sheet1')
fig = plt.figure()
ax = fig.add_subplot(111)
ax.boxplot(df2['Age'])
plt.xlabel('年齡')
plt.ylabel('員工')
plt.title('年齡分佈')
plt.show()

在這裡插入圖片描述

4.條形圖

df2 = pd.read_excel('excel/pandas-matplotlib.xlsx','Sheet1')
mysum = df2.groupby('Gender').Sales.sum()
plt.figure()
mysum.plot(kind='bar')
plt.show()

在這裡插入圖片描述

5.折線圖

mysum = df2.groupby('BMI').Sales.sum()
plt.figure()
mysum.plot(kind='line')
plt.show()

在這裡插入圖片描述

把他們畫到一個畫布裡

mysum = df2.groupby('Gender').Sales.sum()
fig = plt.figure(figsize=(12,6))
ax1 = fig.add_subplot(121) # 使用了變數之後就用 add_subplot
mysum.plot(kind='bar')

mysum = df2.groupby('BMI').Sales.sum()
ax2 = fig.add_subplot(122)
mysum.plot(kind='line')
plt.show()
plt.show()

6.簇狀堆疊圖

mysum = df2.groupby(['BMI','Gender']).Sales.sum()
mysum

在這裡插入圖片描述

mysum.unstack().plot(kind='bar',stacked=True,color=['pink','#50B9F4']) #預設轉的是內層
plt.show()

在這裡插入圖片描述

7.散點圖

fig = plt.figure()
ax = fig.add_subplot(211)
ax.scatter(df2['Age'],df2['Sales'])
plt.show()

在這裡插入圖片描述

8.氣泡圖

fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(111)
ax.scatter(df2['Age'],df2['Sales'],s=df2['Income']) # 第三個引數表示點的大小
plt.show()

在這裡插入圖片描述

9.餅圖

grouped = df2.groupby('Gender').Sales.sum()
plt.figure()
plt.subplot(111)
plt.pie(grouped,labels=grouped.index,autopct='%.1f%%')

plt.show()

在這裡插入圖片描述