Pandas

pandas 统计描述
  一个强大的分析结构化数据额的工具集
  基础是Numpy,提供了高性能矩阵的运算
  应用数据挖掘,数据分析
    如,学生成绩分析,股票数据分析等
  提供数据清洗功能
 
  Series
    类似一维数组的对象
    通过list构建Series
import pandas as pd
ser_obj = pd.Series(range(10))
    有数据和索引组成
      索引在在左,数据在右
      索引是自动创建的
    获取数据和索引
ser_obj.index,ser_obj.values
    预览数据
ser_obj.head(n)
    通过索引获取数据
ser_obj[idx]
    索引与数据的对应关系仍保持在数组运算的结果中
    通过dict构建Series
    那么属性
ser_obj.name,ser_obj.index.name
  DataFrame
    类似多维数组/表格孙书记(如Excel,R中的data.frame)
    每列数据可以是不同的lei8x,what about ndarray?
    索引包括列索引和行索引
    通过ndarray构建DataFrame
    通过dict构建DataFrame
    通过列索引获取数据(Series类型)
df_obj[col_idx]
      或
df_obj.col_idx
    增加列数据,类似dict添加key-value
df_obj[new_col_idx] = data
    删除列
del df_obj[col_idx]

   ...

d = pd.DataFrame([[52,6,95],[44,8,61],[1,23,3]],columns = ['a','b','c'])
d.head()# 头部书籍,默认前五行,d.head(行数)
d.tail() # 尾部数据,默认是后五行,d.tail(行数)
  索引对象lndex
    Series和 DataFrame 中的索引都是lndex对象
    不可变(immutable)
      保证了数据的安全
    常见的lndex种类
      lndex
      ln64lndex
      Multilndex,'层级'索引
      Datetimelndex,时间戳类型
 
  索引操作
    Series索引
      行索引,ser_obj['label'],ser_obj[pos]
      切片索引,ser_obj[2:4],ser_obj['label1':'label3']
        注意,按索引名切片操作时,时包含终止索引的
    不连续索引,ser_obj[['label1','label2','label3']] ser_obj[[pos1,pos2,pos3]]
    布尔索引
 
    DataFrame索引
      列索引
df_obj['label']
      不连续索引
df_obj[['label1','label2']]
  索引操作总结
    Pandas 的索引可归纳为3种
    .loc 标签索引
    .iloc 位置索引
    .ix 标签与位置混合索引
      先按标签索引尝试操作,然后在按位置索引尝试操作
    注意
      DataFrame 索引时可将其看作 ndarray 操作
      标签的切片索引时包含末尾位置的
 
  函数应用
    可直接使用NumPy的 ufunc 函数,如 abs 等
    通过apply将函数应用到行或列上
      注意指定周的方向,默认axis=0
      通过 applymap 将函数应用到每个数据上
 
  排序
    sort_index,索引排序
      对 DataFrame操作时注意轴方向
    按值排序
sort_values(by='label')
  处理缺失数据
    判断是否存在缺失值
ser_obj.jsnull(),df_obj.isnull()
    dropna
      丢弃缺失数据
    fillna
      填充缺失数据
 
  常用的统计计算
    sum,mean,max,min...
    axis=0 按列统计, axis=1 按行统计
    skipna 排除缺失值,默认为 True
    idmax,idmin,cumsum
 
  统计描述
    describe 产生多个统计数据
 
----------------------------------------------------------------------------
 
数据的分组与聚合
  层级索引
    Multilndex 对象
    选取子集
      外层选取 ser_obj['outer_label']
      内层选取 ser_obj[:,'inner_label']
    常用于分组操作,透视表的生成等
    交换分层顺序
swaplevel()
    排序分层
sortlevel()
  分组
    对数据集进行分组,然后对每组进行统计分析
    SQL能够对数据进行过滤,分组聚合
    pandas能利用groupby进行更加复杂的分组运算
    分组运算过程
      split -> apply -> combine
      拆分: 分组的根据
      应用:每个分组运行的计算规则
      合并:把每个分组的计算结果合并起来
    GroupBy 对象: DataFrameGroupBy,SeriesGroupBy
    GroupBy对象没有进行实际运算,只是包含分组的中间数据
    对 GroupBy 对象进行分组运算/多重分组运算,如mean()
      非数值数据不进行分组运算
    size() 返回每个分组的元素个数
    按列名分组
obj.groupby('label')
    按列名多层分组
obj.groupby(['label1','label2'])# -> 多层 dataframe
    按自定义的key分组
obj.groupby(self_def_key)

      自定义的key可为列表或多层列表

    unstack 可以将多层索引的结果转换成单层的 dataframe
    GroupBy 对象支持迭代操作
      每次迭代返回一个元组( group_name,group_data )
      可用于分组数据的具体运算
    GroupBy 对象可以转成列表或字典
    Pandas 也支持按列分组
    其他分组方法:
      通过字典分组
      通过函数分组,函数传入的参数为行索引或列索引
      通过索引级别分组
 
  聚合
    数组产生标量的过程,如mean(),count() 等
    常用于对分组后的数据进行计算
    内置的聚合函数
      sum(),mean(),max()0,min(),count(),size(),describe()
    可自定义函数,传入agg方法中
      grouped.agg(func)
      func的参数为 groupby 索引对应的记录
 
  分组运算
    原因
      聚合运算改变了原始数据的shape
      如何保持原始数据的shape
        使用merge的外链接,比较复杂
        transform
      transform 的计算结果和原始数据的shape保持一致
        如: grouped.transform(np.mean)
        也可传入自定义函数
 
------------------------------------------------------------------
数据清洗,合并,转化和重构
  数据清洗时数据分析关键的一步,,直接影响之后的处理工作
  数据需要修改吗?有什么需要修改的吗?数据应该怎么调整才能适用于接下来的分析和挖掘?
  是一个迭代的过程,实际项目中可能需要不止一次的执行这些清洗操作
  处理缺失数据
    pd.fillna(),pd.dropna()
 
  pd.merge
    根据单个或多个键将不同 DataFrame 的行连接起来
    累比数据库的连接操作
    默认将重叠的列名作为 外键 进行连接
      on 显示指定 外键
      left_on 左侧数据的 外键
      right_on 右侧数据的 外键
    默认是‘内连接’(inner),既结果中的键是交集
    how 指定连接方式
    ‘外连接’(outer),结果中的键是并集
    ‘左连接’(left)
    ‘右连接’(right)
    处理重复列名
      suffixes, 默认为 _x,_y
    按索引连接
left_index = True 或 right_index = True
 
  pd.concat
    沿轴方向将多个对象合并到一起
    NumPy 的 concat
      np.concatenate
    pd.concat
      注意指定轴方向,默认axis = 0
      join 指定合并方式,默认 outer
      Series 合并是查看行索引
      DataFrame 合并是同时查看行索引和列索引
 
  重构
    stack
      将列索引旋转为行索引,完成层级索引
      DataFrame -> Series
      默认操作内层索引,既 leve = -1
 
  处理重复数据
    duplicated()返回布尔型 Series 表示每行是否为重复行
    drop_duplicates() 过滤重复行
      默认判断全部列
      可指定按某些列判断
    map
      Series 根据 map 传入的函数对每行或每列进行转换
 
    数据替换
      replace
 
-----------------------------------------------------------------------------
聚类模型: K-Means
  聚类 属于无监督学习
  无类别标记
  算法接收参数K:然后将样本点划分为K个聚类,同一聚类中的样本相似度较高,不同聚类中的样本相似度较小
  算法思想:一空间中K个样本点为中心进行聚类,对最靠近它们的样本点归类。通过迭代的方法,逐步更新各聚类中心,直至达到最好的聚类效果
  算法描述:
    1.选择K个聚类的初始中心
    2.在第N次迭代中,对任意一个样本点,求其到K个聚类中心的距离,将该样本点归类奥距离最小的中心所在的聚类
    3.利用均值等方法更新各类的中心值
    4.对所有的K个聚类中心,如果利用2,3步的迭代更新后,达到稳定,则迭代结束
 
  优点
    速度快,简单
  缺点
    最终结果和初始点的选择相关,容易陷入局部最优,需要给定K值
 
原文地址:https://www.cnblogs.com/mysterious-killer/p/9895185.html