python 数据处理 pandas+numpy 等使用技巧

python 数据处理

    • python 数据处理 pandas使用技巧 最近在处理一些数据,发现以前所使用的一些方法可能比较笨拙,python 之中有一些比较方便的数据处理函数和技巧,所以写下此篇博客记录一下
  • 1、数据转换:Dict TO List, TO Dataframe
  • 2、数据匹配
  • 3、fillna()函数的使用
  • 4、tile()函数的使用
  • 5、sum()函数的使用

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]

你可能感兴趣的:(经验篇,python,列表,字典,数据处理)