zoukankan      html  css  js  c++  java
  • 数据分析---项目总结

    一  知乎数据清洗整理和数据研究

      1 import matplotlib.style as psl

       plt.style.available

       psl.use()

      2 plt.merge() 

        这里方法的功能超出我的想象。如果存在两张表,实际上不用对两张表清理的很彻底,就可以用merge方法,将两个表融合在一起,牛牛牛,非常有傲气。而且,有how参数,默认inner,就会保留我们想分析处理的字段。

      3 label 参数,应用可能挺广泛的。在scatter,axvline中都有。

        如果设置了label参数,plt.legend()就会显示。

      4 plt.text(x,y,data.index ),有时候会展现出惊奇的效果。比如点的坐标,点的名称,尤其是名称,当时我看到的时候,以为是一个不知道的方法,最后才知道 是用plt.text实现的。

      5 对数据进行去空值处理,我做的时候 是 不区分数据类型,全部填充"缺失数据",不是不可以,但更好的方法是 按照数据类型处理,pandas中,区分为object,和 int32,float32,等等,对这些数据应该区分处理。可以写个函数实现。

      6 data.groupby().sum() / count() 

    二  视频网站数据清洗整理和结论研究

      1 groupby的使用

         在groupby后面,可以接筛选的列,然后接方法。以下,这两种方式是支持的

                    data.groupby('导演')[['好评数','评分人数']].sum()

                    data.groupby('导演').sum()[['好评数','评分人数']]

      2 既然用到 numpy,pandas,就尽量使用 np,pd的方法。

        series.str.replace() 等等,是可以实现 想要的操作的,而不要想着要用python的方法,然后在转换,效率就低了呀。

        data['数据获取日期'].str.replace('月','-')

      3 pd.merge() 这里又用到了,再一次强调,这个方法有妙用。

        这里是 先生成data1,相关字段绝对不重复的一张表。data2 先将某个相关字段groupby,再加 求和 /  个数的表,将data1,data2,通过那个相关字段结合在一起。

        

    q2data1 = data_c2[['导演','上映年份','整理后剧名']].drop_duplicates()  
    
    
    q2data2 = data_c2.groupby('整理后剧名').sum()[['评分人数','好评数']]
    
    
    q2data3 = pd.merge(q2data1,q2data2,left_on='整理后剧名',right_index=True)

      4 清理数据之清理重复数据

        data.drop_duplicates()

    三  北京落户人的数据分析

      数据如下,尽管只有4列信息。但可以分析的方面很多。比如选择 company维度,哪家公司落户的人最多,落户最多的前二十家公司是那些? -->  排序

      选择 birthday维度,落户的都有那些年龄段,不同年龄段落户的人 有多少? --->  饼图  / 条形图

      选择score维度,哪些分数段的落户最多?  ---> 饼图  / 条形图

      company 离散的类型,用到的方法是 --> groupby(' company ')

      birthday,score 是连续的类型,用到的方法是 -->  groupby( pd.cut( data[ 'score' ], np.arange(10,100,5 ) ) ).count()

         当然,pd.cut( data[ 'score' ], np.arange(10,100,5 ) ) .value_counts() 也一样。

           

      上面的思想要了解!

      

       

        补充下 方法中的几个参数

          1)pd.read_csv(index_col )

          

           2)data.groupby(as_index=)

            取false,就好看些了

            

           

          3)时间索引

            总结下就是 一个 timestamp 可以和由timestamp组合的 时间序列 做加减运算。

                    运算完后,就是Timedelta类型,timedelta类型可以进行除法运算。

                    注意timedelta是如何构建的。

            

             

      series根据value值获取对应的index。

        d2[d2.values=='xx'].index   这不就是bool值1 一些方法以及一些参数

        pd.read_csv(index_col='',usecols='')
        对于 '4e+8' 这种类型,尽管是字符串模样,float方法是可以转变为float类型的,int方法是不可以的。转化为float后,df先 astype('f8') 如果想
        转成int。然后
    astype('i8')。直接 astype('i8') 似乎是不行的。

    2 分析过程 1)最开始阶段,最重要的几个方法 data.describe() 因为只对数字类型进行运算,所以可以迅速的看出哪些是数字类型,哪些是字符串类型。字符类型自动忽略np.nan data.value_counts(dropna=False) 这在数据清洗的开始阶段非常重要。方法本身就会对值进行分类统计,这对于离散的值非常重要。drop_na参数, 这是因为数据本身可能有问题,同样可以让我们迅速的看出 当前的数据有没有问题。
         data.count() 会把每一列的个数列出来,对nan值不计算。这一段尤为重要,这是看哪一列数组有nan的最简单方法。 count方法的妙用。
    2)对数据清洗,先是看下有没有空值,异常值, 然后在去看有没有重复值。重复值最好放在最后处理。 空值就是 isnull() notnull() 利用布尔值索引,可以迅速的查出。(count方法) 重复值就是 unique() / unique().size 查看不重复值的个数。 当然 drop_duplicates 也是可以的。 3) 在对值进行处理是,经常会需要自己写函数,这就用到了apply方法。 在对有问题的数据进行定位时,最常用的手段就是布尔值索引,所以,自己写 的函数,条件满足是返回True,不满足是返回False,是很常见的。
    分析的另外一点:
        一个表有多列,或许有多组数组,可能有相关系。
        data.corr(method='pearson') 在分析的两个变量都符合正态分布的情况下,最为精确
        data.corr(method='spearman') 不要求分析的变量符合正态分布,仅要求变量至少是有序,离群值(outliers)时尽量选择Spearman统计
    

    销量最大的10个产品和销售额最多的10个产品   就会用到 index.intersection方法 Form the intersection of two Index objects.
        eg:data.index.intersection(np.arange(1,30,3))
        这个方法就是取 筛选出来的两个df的index的交集
      股票分析
    1 一个简单的原则是看拐点,拐点的概念。昨天小于十日均线,今天大于十日均线,就卖,反之,就买。通过自定义函数,返回True,Fasle
        进一步判断(布尔型索引),细节不再描述。
    2 用到的方法是df.rolling(n).+ 聚合函数,这个rolling方法牛逼了。自动计算相邻的n个数,这个牢记。!!
    # 在电商领域,时间序列非常常见,是表中的非常重要的一部分。这里介绍两个方法
    # 1 dt.方法  datetime类的一个很厉害的方法
    # dt.day
    # dt.dayofweek
    # df.day_name ...
    
    # 2 月成交额
    # 这就用到了resample的方法  Convenience method for frequency conversion and resampling of time series
    # data.resample('m').sum()['xx']

     

  • 相关阅读:
    VB.NET 操作Json 包括嵌套的
    c#和VB混用出现的错误
    System.ArgumentException: 另一个SqlParameterCollection中已包含SqlParameter。
    centos vsftpd 安装配置
    linux centos apache+php+mysql 安装( 用包安装 非yum 安装)
    迟到的一笔 php 5 apache 2.2 webservice 创建与配置
    linux centos apache+php+mysql 安装
    php 不能连接数据库 php error Can't connect to local MySQL server through socket '/tmp/mysql.sock'
    内置过渡动画
    Input 输入框
  • 原文地址:https://www.cnblogs.com/654321cc/p/11928036.html
Copyright © 2011-2022 走看看