数据分析---项目总结

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

  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']

 

 

 

posted @ 2019-11-25 15:22  骑者赶路  阅读(507)  评论(0编辑  收藏  举报