numpy
- 创建数组array
关键字 | 意义 |
---|---|
array | 创建数组 |
dtype | 指定数据类型 |
zeros | 创建数据全为0 |
ones | 创建数据全为1 |
empty | 创建数据接近0 |
arange | 按指定范围创建数据 |
linspace | 创建线段 |
np.array([2,23,4],dtype=np.int32)
np.zeros((3,4))
np.linspace(1,10,20).reshape((5,4))
np.arange(12).reshape((3,4))
- 基本运算
运算字符 | 意义 |
---|---|
sum() | 求和 |
max(a,axis=0) | 返回每列的最大值 |
min(a,axis=1) | 返回每行的最小值 |
dot(a,b) | 返回矩阵A,B的矩阵乘 |
a*b | 矩阵a,b的数乘 |
mean() | 平均值 |
argmin() | 返回最小值对应的自变量/索引 |
argmax() | 返回最大值对应的自变量/索引 |
median() | 返回中位数 |
transpose()/T | 返回矩阵的转置 |
clip(A,a,b) | 将矩阵A中小于a的值替换成a,大于b的值替换成b |
- 合并&分割
- 合并
np.vstack((A,B)) # vertical stack 上下合并
np.hstack((A,B)) # horizontal stack 左右合并
- 分割
np.vsplit(A, 3) #等于 np.split(A, 3, axis=0)
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
np.hsplit(A, 2) #等于 np.split(A, 2, axis=1)
"""
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
"""
- copy & deepcopy
pandas
-
数据结构
- Series
- DataFrame
-
设置值
- 根据位置设置 loc 和 iloc
利用索引或者标签确定需要修改值的位置
df.iloc[2,2] = 1111
df.loc['20130101','B'] = 2222 - 根据条件设置
df.[df.A>4] = 0
df.B[df.A>4] = 0 - 添加数据
df['F'] = np.nan
- 根据位置设置 loc 和 iloc
-
处理丢失数据
- pd.dropna()
直接去掉有 NaN 的行或列
- pd.dropna()
df.dropna(
axis=0, # 0:对行进行操作;1:对列进行操作
how='any' # 'any':只要存在NaN就drop掉; 'all':必须全部是 NaN才drop
)
- pd.fillna(value=0)
如果是将 NaN 的值用其他值代替, 比如代替成0 - pd.isna()
判断是否有缺失数据 NaN, 为 True 表示缺失数据 -
导入导出
data = pd.read_csv('student.csv')
data.to_pickle('student.pickle') - 合并concat
#concat纵向合并,并将index_ignore设定为True
res = pd.concat([df1, df2, df3], axis=0, ignore_index=True)
未设定任何参数时,函数默认axis=0
#纵向"外"合并df1与df2
res = pd.concat([df1, df2], axis=0, join='outer')
函数默认join='outer'。依照column来做纵向合并,有相同的column上下合并在一起,其他独自的column个自成列,原本没有值的位置皆以NaN填充
#纵向"内"合并df1与df2
res = pd.concat([df1, df2], axis=0, join='inner', ignore_index=True)
只有相同的column合并在一起,其他的会被抛弃
#依照`df1.index`进行横向合并
res = pd.concat([df1, df2], axis=1, join_axes=[df1.index])
#将df2合并到df1的下面,以及重置index,并打印出结果
res = df1.append(df2, ignore_index=True)
append只有纵向合并,没有横向合并
-
合并merge
pandas中的merge和concat类似,但主要是用于两组有key column的数据,统一索引的数据. 通常也被用在Database的处理当中- 依据一组key合并
#依据key column合并,并打印出
res = pd.merge(left, right, on='key')
- 依据两组key合并
合并时有4种方法how = ['left', 'right', 'outer', 'inner'],预设值how='inner'
#依据key1与key2 columns进行合并
res = pd.merge(left, right, on=['key1', 'key2'], how='inner')
- Indicator
indicator=True会将合并的记录放在新的一列
# 自定indicator column的名称,并打印出
res = pd.merge(df1, df2, on='col1', how='outer', indicator='indicator_col')
- 依据index合并
#依据左右资料集的index进行合并,how='outer',并打印出
res = pd.merge(left, right, left_index=True, right_index=True, how='outer')
- pandas plot 出图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
- Series可视化
data = pd.Series(np.random.randn(1000),index=np.arange(1000)) # 随机生成1000个数据
data.cumsum() # 为了方便观看效果, 累加这个数据
# pandas 数据可以直接观看其可视化形式
data.plot()
plt.show()
- Dataframe 可视化
data = pd.DataFrame(
np.random.randn(1000,4),
index=np.arange(1000),
columns=list("ABCD")
)
data.cumsum()
data.plot()
plt.show()
- 散点图
ax = data.plot.scatter(x='A',y='B',color='DarkBlue',label='Class1')
# 将下面data 画在上一个 ax 上面
data.plot.scatter(x='A',y='C',color='LightGreen',label='Class2',ax=ax)
plt.show()
网友评论