pandas是在數據處理、數據分析以及數據可視化上都有比較多的應用,這篇文章就來介紹一下pandas的入門。勞動節必須得勞動勞動web
如下代碼在jupyter
中運行,Python 版本3.6。首先導入 pandassql
import pandas as pd
# 爲了能在jupyter中展現圖表 %matplotlib inline 複製代碼
# 從csv文件讀取數據,也可從excel、json文件中讀取
# 也能夠經過sql從數據庫讀數據
data = pd.read_csv('order_list.csv')
複製代碼
# 輸出幾行幾列
data.shape
output: (1000, 3) 複製代碼
能夠看到,變量 data 是一個二維表,有1000行,3列。pandas中這種數據類型被稱做 DataFrame。數據庫
# 查看數據描述
data.describe()
複製代碼
data 中有3列,good_id、good_cnt 和 order_id 分別表明商品id、購買該商品數量和訂單id。最左側是describe
函數統計的指標,包括每一列的數量、均值、標準差、最大值、最小值等等。json
# 預覽數據,條數可設
data.head(3)
複製代碼
# 獲取第2行數據
data.loc[2]
output: good_id 100042 good_cnt 1 order_id 10000002 Name: 2, dtype: int64 複製代碼
# 獲取多行數據,數組元素表明行號
data.loc[[1, 2]]
複製代碼
# 獲取商品id=100012的全部記錄
data[data['good_id']==100012]
複製代碼
# 獲取商品id=100012且每筆訂單銷量=6的全部記錄
data[(data['good_id']==100087) & (data['good_cnt']==6)]
複製代碼
# 獲取訂單號在[10000000, 10000042]中的記錄
data[data['order_id'].isin([10000000, 10000042])]
複製代碼
# 畫100012商品,每筆訂單銷量折線圖
data[data['good_id']==100012]['good_cnt'].plot()
複製代碼
# 畫100012商品,銷量柱狀圖
data[data['good_id']==100012]['good_cnt'].hist()
複製代碼
# 更新數據,將第1行的good_cnt列改成10
data.loc[1, 'good_cnt'] = 10
data.head(3)
複製代碼
# 將100012商品每筆訂單銷量都改成20
data.loc[data['good_id']==100012, 'good_cnt'] = 20
data.head(3)
複製代碼
# 統計每種商品出現次數
# 即:每種商品的下單次數
data['good_id'].value_counts()
output:
100080 18
100010 16
100073 16
100097 15
100096 15
..
100079 5
100077 5
100007 4
100037 4
100033 4
Name: good_id, Length: 100, dtype: int64
複製代碼
# 取出商品銷量列,該列中每一個值都加1
data['good_cnt'].map(lambda x: x+1)
output:
0 21
1 11
2 2
3 4
4 10
..
995 8
996 9
997 6
998 5
999 9
Name: good_cnt, Length: 1000, dtype: int64
複製代碼
這裏,map
並不改變原有的 data 中的數據,而是返回新的對象。數組
# 對數據集每列調用給定的函數
data.apply(len)
複製代碼
這裏是對每列執行len
函數,固然apply
中的len
函數也能夠換成自定義的 lambda 表達式。另外,若是想按行作處理,則在調用apply
函數時加上axis=1
參數便可。app
# 對數據集中全部元素調用給定函數
# 一樣不改變原有數據集
data.applymap(lambda x: x*100)
複製代碼
# 計算每列之間的相關係數
data.corr()
複製代碼
# 畫出相關係數矩陣
pd.plotting.scatter_matrix(data, figsize=(12,8))
複製代碼
以左小角爲例,它表示商品id(good_id)和訂單id(order_id)之間的相關性。因爲點比較分散,沒有任何規律,所以能夠說明這兩列在數據值上沒有相關性,這也好理解,由於原本它倆就是不一樣的概念。機器學習
相關係數矩陣通常用於機器學習中觀察不一樣特徵之間的相關性。編輯器
# 構造DateFrame,表明訂單發生的城市
order_city_df = pd.DataFrame(\
dict(order_id=[10000000, 10000001], \
city=['上海', '北京'])\
)
# 實現join data.merge(order_city_df, on=['order_id']) 複製代碼
# 統計每一個商品的總銷量
data.groupby('good_id')['good_cnt'].sum().reset_index()
複製代碼
dictionary = {}
for i,row in data.iterrows(): dictionary[row['good_id']] = row['good_cnt'] 複製代碼
pandas的入門就介紹到這裏,但願能對你有幫助。對於想繼續深刻的朋友能夠參考pandas官方文檔,中英文都有。另外,咱們使用pandas通常都是單機來處理,若是數據量比較大,單機運行起來會比較慢。這時候你可能會用到另一個工具叫 Dask,它的接口兼容 pandas,能夠與pandas相互轉換,而且能夠運行在集羣上分佈式處理數據。分佈式
如需完整代碼,在公衆號回覆關鍵字 pd 便可函數
歡迎公衆號「渡碼」,輸出別地兒看不到的乾貨。