zoukankan      html  css  js  c++  java
  • 交叉表与透视变

    交叉表与透视表什么作用

    • 分析两个离散值值间得相关性

    • 探究股票的涨跌与星期几有关?
      以下图当中表示,week代表星期几,1,0代表这一天股票的涨跌幅是好还是坏,里面的数据代表比例
      可以理解为所有时间为星期一等等的数据当中涨跌幅好坏的比例

    使用crosstab(交叉表)实现上图

    • 交叉表:用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系)
      • pd.crosstab(value1, value2)
        • value1,value2必须是两个离散变量
      • DataFrame.pivot_table([], index=[])

    案例

    寻找星期几跟股票张得的关系

    # 1、先把对应的日期找到星期几
    date = pd.to_datetime(data.index).weekday
    data['week'] = date
    
    

    # 2、假如把p_change按照大小去分个类0为界限
    data['posi_neg'] = np.where(data['p_change'] > 0, 1, 0)
    

    # 通过交叉表找寻两列数据的关系
    count = pd.crosstab(data['week'], data['pos_neg'])
    


    但是我们看到count只是每个星期日子的好坏天数,并没有得到比例,该怎么去做?

    • 对于每个星期一等的总天数求和,运用除法运算求出比例
    # 算数运算,先求和
    sum = count.sum(axis=1).astype(np.float32)
    
    # 进行相除操作,得出比例
    pro = count.div(sum, axis=0)
    

    • 使用plot画出这个比例,使用stacked的柱状图
    pro.plot(kind='bar', stacked=True)
    plt.show()
    

    • 结论:跟星期几没有关系

    pivot_table(透视表)

    # 通过透视表,将整个过程变成更简单一些
    data.pivot_table(['posi_neg'], index='week')
    

    一步到位计算出比例

  • 相关阅读:
    IntelliJ IDEA设置JDK1.8
    maven Create from archetype
    字符串的获取相关方法
    字符串比较
    题目:自定义4个学生对象,添加到集合,并遍历
    生成6个1-33之间的随机整数,添加到集合,并遍历集合。
    ArrayList的集合概述和基本使用
    对象数组
    匿名对象作为方法的参数和返回值
    构造方法
  • 原文地址:https://www.cnblogs.com/oklizz/p/11494175.html
Copyright © 2011-2022 走看看