美文网首页
2.1数据结构 numpy & pandas

2.1数据结构 numpy & pandas

作者: d9e7e8498548 | 来源:发表于2019-11-21 21:29 被阅读0次

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

10 minutes to 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
  • 处理丢失数据

    • pd.dropna()
      直接去掉有 NaN 的行或列
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()

相关文章

网友评论

      本文标题:2.1数据结构 numpy & pandas

      本文链接:https://www.haomeiwen.com/subject/aycjcqtx.html