1. 程式人生 > >第八章:繪圖和視覺化

第八章:繪圖和視覺化

說明:本文章為Python資料處理學習日誌,記錄內容為實現書本內容時遇到的錯誤以及一些與書本不一致的地方,一些簡單操作則不再贅述。日誌主要內容來自書本《利用Python進行資料分析》,Wes McKinney著,機械工業出版社。

這篇博文主要是為了補全python處理資料系列,所以寫的比較簡略,並沒有太多程式碼,主要說明一下這一章可能會遇到的幾個問題。

1、P242的三個繪圖函式

Rectangle的三個引數分別為:左下頂點座標,長,寬;
Circle的兩個引數為:圓心,半徑;
Polygon的三個引數為:三個頂點的座標。
alpha為透明度。
繪出來的圖看起來像橢圓,是因為xy軸比例不一樣,調整視窗大小就可以看到確實是圓。

2、P249

tips = pd.read_csv('tips.csv')

party_counts = pd.crosstab(tips.day,tips.size)

party_counts
Out[13]: 
col_0  1708
day        
Fri      19
Sat      87
Sun      76
Thur     62

這個結果和書上的不一樣,原因在於列名size

tips.day[:5]
Out[17]: 
0    Sun
1    Sun
2    Sun
3    Sun
4    Sun
Name: day, dtype: object

tips.size
Out[18]: 1708

size是tips的自帶屬性,於是其不能作為列名顯示其內容,就會出現上述的結果。任意將size改成people_size或者其他名字均可(在csv直接改即可),就可得到書本上的結果。後續也要注意此處的名字有所修改。

 tips = pd.read_csv('tips.csv')

party_counts = pd.crosstab(tips.day,tips.people_size)

party_counts
Out[21]: 
people_size  1   2   3   4  5  6
day                             
Fri          1
16 1 1 0 0 Sat 2 53 18 13 1 0 Sun 0 39 15 18 3 1 Thur 1 48 4 5 1 3

3、P256三個函式

下面定義的三個函式是幹什麼的,我們舉例說明。
先看data中的一條資料:

data[1:2]
Out[28]: 
   Serial                  INCIDENT TITLE     INCIDENT DATE LOCATION  \
1    4051  Food-Aid sent to Fondwa, Haiti  28/06/2010 23:06   fondwa   

                                         DESCRIPTION  \
1  Please help food-aid.org deliver more food to ...   

                                            CATEGORY   LATITUDE  LONGITUDE  \
1  1. Urgences | Emergency, 2. Urgences logistiqu...  50.226029   5.729886   

  APPROVED VERIFIED  
1       NO       NO  

data[1:2].CATEGORY
Out[29]: 
1    1. Urgences | Emergency, 2. Urgences logistiqu...
Name: CATEGORY, dtype: object

在csv中檢視該條資料的CATEGORY為:

'''|前是非英文名,之後是英文名'''
1. Urgences | Emergency, 2. Urgences logistiques | Vital Lines,

首先,第一個函式是將每條CATEGORY根據“,”分割,並存入陣列返回。
上面一條記錄分割後的結果為:

['1. Urgences | Emergency', 
 '2. Urgences logistiques | Vital Lines']

第二個函式接受第一個函式的結果,將所有結果剔除相同的,得到一個不重複的CATEGORY集合,目的是為了得到所有出現在表格中的分類。

第三個函式是為了得到分類的英語名,上述記錄會被分割為:

['1', 'Emergency']
['2', 'Vital Lines']