利用python进行数据分析和计算时,经常用到两种数据类型:数据框(DataFrame)和数组(array)。两种数据类型的转换、多个数据的合并以及计算数据中的最值等问题是频率较高的操作。下面介绍解决这些问题的方法。
首先导入python中最常用的数据处理两个模块:numpy模块、pandas模块。然后创建一个DataFrame类型数据df,两个数组arr1和arr2。
1 | import numpy as np |
数据类型转换
(1) DataFrame转换为array
- 使用DataFrame中的values方法
1 | df |
- 使用Numpy中的array方法
1 | df_arr2 = np.array(df) |
(2) array转换为Data Frame
使用Pandas 的DataFrame方法
1 | df2 = pd.DataFrame(df_arr) |
数据合并、拼接
数据合并常见的情况有两个数据框或数组进行水平或垂直方向的合并。
(1) DataFrame的合并
方法有:
- pandas的merge函数
df = pd.merge(df1, df2, how='left', on='id')
how='left'
表示以df1为基准数据,on='id'
表示合并时的索引ID
1 | df1 |
- pandas的concat函数
df = pd.concat(df1,df2, axis )
, axis=1表示列拼接,axis=0表示行拼接
只是简单的只进行数据拼接,并不进行去除差异或相似的操作
1 | 0) df4 = pd.concat([df1,df2],axis= |
(2) Array的合并
方法包括以下几种,常见的有concatenate, stack,hstack和vastack
原始数据
1 | 21,22,23], [24,25,26]]) arr1= np.array([[ |
concatenate
1
2
3
4
5
6
7
8
9
10
11
12
13>>> arr3=np.concatenate((arr1, arr2)) # 默认axis=0,行方向合并
>>> arr3
array([[21, 22, 23],
[24, 25, 26],
[27, 28, 29],
[31, 32, 33]])
>>> arr3.shape
(4, 3)
>>> arr4=np.concatenate((arr1, arr2),axis=1)
>>> arr4
array([[21, 22, 23, 27, 28, 29],
[24, 25, 26, 31, 32, 33]])
- stack
np.stack(())
合并后的数据是多个数组,纬度增加。参数axis默认值为0.
1 | arr5 = np.stack((arr1, arr2)) |
- hstack:水平合并, 数组纬度没变
1 | np.hstack((arr1,arr2)) |
- vstack:垂直合并,数组纬度没变
1 | np.vstack((arr1,arr2)) |
最值
使用numpy的max/min函数
1 | arr1 |