• 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值
     
  • 相关阅读:
    23. call和apply和bind的区别
    22.call方法的深入
    21.函数的三种角色
    20.原型深入
    2.9 原型链综合复习参考
    2.8深入扩展原型链模式常用的六种继承方式
    2.7原型链模式扩展-批量设置公有属性
    php数组函数有哪些操作?php数组函数的应用
    PHP常见的一些问题总结(收藏)
    yii框架 隐藏index.php 以及美化URL(pathinfo模式访问)
  • 原文地址:https://www.cnblogs.com/mysterious-killer/p/9895185.html
Copyright © 2020-2023  润新知