1. 程式人生 > 其它 >python 資料處理 pandas+numpy 等使用技巧

python 資料處理 pandas+numpy 等使用技巧

技術標籤:經驗篇python列表字典資料處理

python 資料處理

python 資料處理 pandas使用技巧 最近在處理一些資料,發現以前所使用的一些方法可能比較笨拙,python 之中有一些比較方便的資料處理函式和技巧,所以寫下此篇部落格記錄一下

1、資料轉換:Dict TO List, TO Dataframe

dict_a= dict()
for i in range(11):
    dict_a['blk_%d'%i]=10-i
print(dict_a)

建立如下字典:

>>>
{'blk_0': 10, 'blk_1': 9, 'blk_2': 8, 'blk_3': 7, 'blk_4': 6, 'blk_5': 5, 'blk_6': 4, 'blk_7': 3, 'blk_8': 2, 'blk_9': 1, 'blk_10': 0}

字典轉列表:

list_b=list(dict_a.items())
print
(list_b)
>>>
[('blk_0', 10), ('blk_1', 9), ('blk_2', 8), ('blk_3', 7), ('blk_4', 6), ('blk_5', 5), ('blk_6', 4), ('blk_7', 3), ('blk_8', 2), ('blk_9', 1), ('blk_10', 0)]

列表轉DataFrame:

pd_c=pd.DataFrame(list_b,columns=["id","conent"])
print(pd_c)
>>>
        id  conent
0
blk_0 10 1 blk_1 9 2 blk_2 8 3 blk_3 7 4 blk_4 6 5 blk_5 5 6 blk_6 4 7 blk_7 3 8 blk_8 2 9 blk_9 1 10 blk_10 0

2、資料匹配

需求:有兩組資料,均為CSV列表檔案,將對應使用者的label新增新列到資料中。

一組資料為以使用者名稱“BlockId”為主的行資料,代表每一個使用者的資料。
另一組資料為標籤資料,主要有兩列,“BlockId”和“label”。

# 讀入兩組資料
data_df = pd.DataFrame(data_file, engine='c', na_filter=False, memory_map=True)
label_data = pd.read_csv(label_file, engine='c', na_filter=False, memory_map=True)

# 將帶標籤資料進行轉換
label_data = label_data.set_index('BlockId')	# 設定“BlockId”為索引
label_dict = label_data['Label'].to_dict()		# 轉換為{BlockId:Label}的字典
#使用apply新增每行資料
data_df['Label'] = data_df['BlockId'].apply(lambda x: 1 if label_dict[x] == 'Anomaly' else 0)

3、fillna()函式的使用

對缺失資料進行填充

data
>>>
      0     1     2   3
a   NaN   NaN   NaN   6
b   NaN   NaN   NaN  10
c  11.0  12.0  13.0  14
d  15.0  16.0  17.0  18

print(data.fillna(0))   ### 用0填充缺失資料
>>>
      0     1     2   3
a   0.0   0.0   0.0   6
b   0.0   0.0   0.0  10
c  11.0  12.0  13.0  14
d  15.0  16.0  17.0  18

4、tile()函式的使用

將資料擴充套件重複

#定義陣列
X=np.array([[3,1,2],[1,2,1]])
print(X)
>>>
[[3 1 2]
 [1 2 1]]

a=np.tile(X,(1,2))   #行擴充套件
# a=np.tile(X,2)  #一樣效果
print(a)
>>>
[[3 1 2 3 1 2]
 [1 2 1 1 2 1]]

aa=np.tile(X,(2,1))		#列擴充套件
print(aa)
>>>
[[3 1 2]
 [1 2 1]
 [3 1 2]
 [1 2 1]]

5、sum()函式的使用

# 定義一個數組:
X=np.array([[3.0,1.0,2.0,3.0,1.0,0],[1.0,2.0,1.0,0,0,0]])
print(X)
>>>
[[3. 1. 2. 3. 1. 0.]
 [1. 2. 1. 0. 0. 0.]]
 
X=np.sum(X)   # 計算矩陣中所有元素的和
print(X) 
>>>
 14.0
 
x=np.sum(X, axis=1) # 計算每一行之和
print(x)
>>>
[10.  4.]

x=np.sum(X,axis=0)	# 計算每一列之和
print(x)
>>>
[4. 3. 3. 3. 1. 0.]

x=np.sum(X>0, axis=1) # 統計每一行大於0的數的個數,統計列axis=0
print(x)
>>>
[5 3]