熊貓來了 - Pandas

以下內容為於蔡炎龍老師之-"用電腦計算你的生活4"投影片

ipython 內請盡量不要使用以下兩種方式,容易造成混淆以及函式混亂,比方說: numpy 與 random 都有 randint 這樣的函式

  1. %pylab inline
  2. from module import * / import module 反而應該多用 import module as nickname

為什麼要用pandas

簡單來說就是把Excel的表格觀念丟到Python來,透過 pandas 讓 python 轉化在Excel的操作。 透過Pandas的函式做簡單的處理,例如欄位的加總、分群、樞紐分析表、小計、畫折線圖、圓餅圖等等…

DataFrame 是什麼

在 pandas 裡面的一種資料型態,可以把他想像成 python dictionary ,對應Excel,每一欄的標題相當於 keys() ,而該欄的每個數據則以 list呈現

import pandas as pd

d = {"col-1":[1, 2, 3], "col-2":[4, 5, 6]}
df = pd.DataFrame(data = d)
print(df)

>>>
   col-1  col-2
0      1      4
1      2      5
2      3      6

讀入一個檔案

讀入 CSV

mydata = pd.read_csv('filename.csv')

讀入 Excel

mydata = pd.read_excel('filename.xls', 'sheetname')

簡單列出檔案

DataFrame 會自動幫每一筆資料加入 index ,如下面所示

mydata.head()

>>>
    姓名  國文  英文  數學  自然  社會
0  劉俊安   9  10  15  10  13
1  胡玉華  10  10  10   8   9
2  黃淑婷  13  15   8  11  14
3  陳上紫  10  10   8   9  14
4  崔靜成  13  12  14  12  13

如果需要看看 pandas 裡面各欄資料

mydata["姓名"]
mydata["國文"]

畫圖

mydata['國文'].plot()
mydata['國文'].hist()

直條圖

加一行資料

mydata["結果"] = "錄取"
mydata.head()
>>>
    姓名    國文    英文    數學    自然    社會    結果
0    劉俊安    9    10    15    10    13    錄取
1    胡玉華    10    10    10    8    9    錄取
2    黃淑婷    13    15    8    11    14    錄取
3    陳上紫    10    10    8    9    14    錄取
4    崔靜成    13    12    14    12    13    錄取

可以任選其中幾欄來顯示

select = mydata[["國文", "英文", "結果"]]
select.head()
>>>
國文    英文    結果
0    9    10    錄取
1    10    10    錄取
2    13    15    錄取
3    10    10    錄取
4    13    12    錄取

任選其中幾列

mydata[1:3]
>>>
    姓名    國文    英文    數學    自然    社會    結果
1    胡玉華    10    10    10    8    9    錄取
2    黃淑婷    13    15    8    11    14    錄取
mydata.ix[1]
>>>
姓名    胡玉華
國文     10
英文     10
數學     10
自然      8
社會      9
結果     錄取

依條件篩選

mydata.loc[(mydata["數學"] == 15) & (mydata["英文"] > 12)]
>>>
    姓名    國文    英文    數學    自然    社會    結果
36    詹威德    12    13    15    10    14    錄取
70    葉儀依    9    13    15    8    14    錄取
73    吳志遠    13    15    15    8    8    錄取
83    李士賢    10    14    15    13    13    錄取

基本統計運算

mydata.mean()
mydata.std()
mydata.describe()
>>>
    國文    英文    數學    自然    社會
count    100.000000    100.000000    100.000000    100.00000    100.00000
mean    11.390000    11.380000    11.570000    11.03000    11.83000
std    2.196853    2.273164    2.310516    2.21772    2.48655
min    8.000000    8.000000    8.000000    8.00000    8.00000
25%    9.000000    9.000000    10.000000    9.00000    9.00000
50%    11.000000    11.000000    11.000000    11.00000    12.00000
75%    13.000000    13.000000    14.000000    13.00000    14.00000
max    15.000000    15.000000    15.000000    15.00000    15.00000

results matching ""

    No results matching ""