pandas是python數據分析中非常常用的一個模塊,pandas中功能較多學起來有一定難度,本片文章通過一些簡單例子帶大家快速上手pandas。
我們要用的森林植被的數據,文件名爲parks.csv。
首先先載入pandas:
import pandas as pd
然後用pandas讀入數據,把公園編號'Park Code'設置爲index
df = pd.read_csv('parks.csv', index_col=['Park Code'])
# 顯示出前5行
df.head(5)
數據的列分別爲:公園名字,公園在哪個州,公園大小,維度,經度
獲取單行數據:
使用.iloc 加上行索引獲取單行數據
df.iloc[2]
Park Name Badlands National Park
State SD
Acres 242756
Latitude 43.75
Longitude -102.5
Name: BADL, dtype: object
使用 .loc 方法加上index的名稱獲取單行數據
df.loc['BADL']
Park Name Badlands National Park
State SD
Acres 242756
Latitude 43.75
Longitude -102.5
Name: BADL, dtype: object
獲取多行數據:
loc加上多行數據的名稱
df.loc[['BADL', 'ARCH', 'ACAD']]
iloc加上行索引
df.iloc[[2, 1, 0]]
獲取數據分片
# 獲取前3行數據
df[:3]
# 獲取後3行數據
df[-3:]
獲取單列數據
獲得State這一列數據的前3行
df['State'].head(3)
Park Code
ACAD ME
ARCH UT
BADL SD
Name: State, dtype: object
使用下面df.State方法可以獲得同樣效果
df.State.head(3)
Park Code
ACAD ME
ARCH UT
BADL SD
Name: State, dtype: object
df.Park Code 將會出錯,因爲Park Code中間有空格
df.Park Code
File "<ipython-input-66-49beb60e7bae>", line 1
df.Park Code
^
SyntaxError: invalid syntax
我們可以把所有列的名稱中的空格都替換成_
避免出錯
df.columns = [col.replace(' ', '_').lower() for col in df.columns]
print(df.columns)p=msno.bar(diabetes_data)
Index(['park_name', 'state', 'acres', 'latitude', 'longitude'], dtype='object')
獲取多列數據
columns = ['state', 'acres']
df[columns][:3]
選擇數據的子集
選擇state=='UT'的數據,False表示條件該行條件不成立,True表示該行條件成立
(df.state == 'UT').head()
Park Code
ACAD False
ARCH True
BADL False
BIBE False
BISC False
Name: state, dtype: bool
選擇所有state=='UT'結果爲True的行
df[df.state == 'UT']
更復雜一些的數據提取,獲取緯度大於60或者面積大於10^6的數據的前三行
df[(df.latitude > 60) | (df.acres > 10**6)].head(3)
對park_name中的字符以空格做切分,切分後放入lambda x: len(x) == 3函數中做判斷,如果判斷正確返回True,判斷錯誤返回False
df[df['park_name'].str.split().apply(lambda x: len(x) == 3)].head(3)
state中的數字爲['WA', 'OR', 'CA']中的一個則爲True,否則爲False
df[df.state.isin(['WA', 'OR', 'CA'])].head()