numpy常用数据结构——ndarray
- 实质:矩阵/n维数组
- 创建方法:
- array(列表/元组):
- 不指定数据类型:
np.array([1,2,3]) => [1,2,3]
- 指定数据类型:
np.array([1,2,3],dtype=str/float/int)
- 不指定数据类型:
- 创建多维数组:
- 使用嵌套列表:
np.array([[1,2],[3,4],[5,6]])
- 使用arange:
np.arange(a,b,s) #a为起始值,b为终止值,s为步长,左闭右开,不包含终止值
- 使用嵌套列表:
- 创建等差数列:
np.linspace(a,b,n,endpoint=True/False) #a为起始值,b为终止值,n为数组中的元素个数,endpoint表示包不包含终止值
- 创建全零矩阵(默认浮点型):
np.zeros(4) => [0.,0.,0.,0.]
np.zeros([4,5]) =>四行五列的全零矩阵
- 创建全一矩阵(默认浮点型):
np.ones() #同zeros
- array(列表/元组):
- 运算操作:
- 加上一个数 = 矩阵中每个元素都加上这个数
- 求矩阵维数:
arr.ndim #arr为矩阵名,ndim无参数
- 求矩阵行形状(行数&列数):
arr.shape
- 求矩阵元素个数(行数*列数):
arr.size
- 求矩阵元素类型:
arr.dtype
- 矩阵访问:
- 访问元素:
arr[a,b] #a、b以下标访问
- 访问行/列:
arr[a/b] #缺省列/行
- 可以用切片的方式访问
- 访问元素:
numpy数据清洗常用函数
数据排序
- sort函数:
- 对一维数组:
np.sort(arr) => 对arr进行从小到大进行排序并返回,arr不变
- 对二维数组进行sort操作时,默认对每行进行排序:
np.sort(arr,axis=0) #当axis=1时,对每列进行排序
- 对一维数组:
- argsort函数:
np.argsort(arr) => 返回对arr排序后每个元素对应于arr的下标
其他函数
- where函数:
- 作用:根据条件改变矩阵中每个元素
- 用法:
np.where(a,b,c) #a为判别式,若为true,则b,若为false,则c;类似于C语言的>?;
- 示例:
np.where(arr>3,arr,-1) #对arr中每个元素进行判断,若该元素大于3,则该元素仍为该元素,否则,该元素变为-1
- extract函数:
- 作用:筛选出矩阵中满足条件的元素
- 待补充
pandas常用数据结构——series
- 实质:元素为字典对
- 创建方法:
pandas.Series(data,index,dtype,name)
- data可以为列表、数组、字典;
- index为索引,必须与数据同长度,可缺省;
- name为对象名称,可缺省;
- 示例:
- 列表创建:
pandas.Series([21,23,45],index=['a','b','c'])
,若缺省index,则默认以下标为索引(0,1,2,……),返回的内容其实就是字典对(索引,值) - 字典创建:该方法可缺省index,直接在data中就指定了索引
- 列表创建:
- 访问:(ser为Series变量名)
- 以下标/索引访问,可用切片,返回的是(索引,值)这样一个对
- ser.values:输出值,返回对象是array对象
- ser.index:输出索引
- ser.dtypes:输出数据类型
pandas常用数据结构——dataframe
-
本质:数据表
-
创建方法:
pandas.Dataframe(data,index,dtype,columns)
- data可以为列表、数组、字典;
- index为行索引名称,定义方法同series;
- columns为列名;
-
示例:
- data为嵌套列表,一般为二维列表;
- data为字典,该字典的键为列名,值为列表,包含该列的所有数据;
- data为array,类似list;
-
操作方法:
df.values
df.index
df.columns
df.columns.tolist()
,把columns转换为list形式df.ndim
df.shape
df.size
df.dtypes
-
使用技巧:
- 判断每一列是否有空值:
df.isna().any(axis=0)
- 判断每一行是否有空值:
df.isna().any(axis=1)
- 设置显示参数:
pd.set_option('display.width',100); pd.set_option('display.max_columns',None); pd.set_option('display.max_rows',None);
- 查看某一列不同值出现的次数:
df.colName.value_counts()
- 判断df中是否有重复行:
df.duplicated()
- 统一日期格式:
pd.to_datetime(df['col'], format='%Y-%m-%d)
,format可自定义
- 判断每一列是否有空值: