精华内容
下载资源
问答
  • Python数据分析几个比较常用方法

    千次阅读 2019-05-19 19:24:04
    1,表头或是excel的索引如果是中文的话,输出会出错 ...需求情况:的时候,数据很多,但是只要仅仅对部分列的数据进行分析的话,要怎么做? 解决方法: df = pandas.read_excel('1.xls',sheetname= '...

    前言

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

    PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

    python免费学习资料以及群交流解答点击即可加入

    1,表头或是excel的索引如果是中文的话,输出会出错

     

    ​​解决方法:python的版本问题!换成python3就自动解决了!当然也有其他的方法,这里就不再深究

    2,如果有很多列,如何输出指定的列?

    需求情况:有的时候,数据很多,但是只要仅仅对部分列的数据进行分析的话,要怎么做?

    解决方法

    df = pandas.read_excel('1.xls',sheetname= '店铺分析日报')

    ​df = df.loc[:,['关键词','带来的访客数','跳失率']] #访问指定的列

    一行读取数据,第二行访问指定列

    3,如何为数据框添加新的列?

    需求情况:有一个表格,里面的列是单价,数量,想再输出一个总价的列,或是对一些数据进行总结

    解决方法:直接上代码

    from pandas import read_csv;

    import pandas;

    df = read_csv("1.csv", sep="|");

    #把计算结果添加为一个新的列

    df['result'] = df.price*df.num     #新的列名,后面是对应的数值

    print (df)

    4,如何对百分号的数值进行计算,再将其输出

    需求情况:比较蛋疼的一个情况,电商很多数据都是百分比的,带有百分号,不能进行直接的计算,需要对其进行转换,然后再输出

    解决方法:

    from pandas import read_csv;

    import pandas;

    df = read_csv("1.csv", sep="|");

    f = df['跳失率'].str.strip("%").astype(float)/100;

    f.round(decimals=2)  #保留小数点后面2位

    f_str = f.apply(lambda x: format(x, '.2%'));  #再转换成百分号并且保留2位数(精度可以调整)

    df['跳失率']​ = f_str     #重新赋值

    5,​如何获取导入的数据有几行和几列(数值)

    需求情况:有的时候需要写一个通用脚本,比如随机抽样分析,程序自动获取行和列的话,写出来的脚本通用性明显会很强

    解决方法:

    df.columns.size   #获取列数

    df.iloc[:, 0].size  #获取行数

    6,​如何对数据进行排序

    需求情况:这个就不用说了,到处都要用到​

    解决方法:

    df['跳失率'].size   #对数据进行排序

    newDF = df.sort(['曝光量', '带来的访客数'], ascending=[True, False]);  #多重排序

    7,如何删除指定的列?

    需求情况:同样,十几列的数据,如果你想获取指定的输出数据,可以用方法2,但是如果想要获取的数据列比较多,只有1-2行不想要,这样就可以用指定删除列的方法了

    解决方法:

    df.columns.delete(1)​

    一行代码搞定!​

    总结:整体来说的,python的语法在做数据分析还是相当简单的,很多的需求基本上就是一行代码搞定!

    8,如何添加整行数据?

    df.append([1,2,34,,5])

    展开全文
  • Python pandas数据分析常用方法

    万次阅读 多人点赞 2017-03-20 23:33:48
    df.loc[:, ['Age*Class', 'Age', 'Pclass']].head(10) dataset.loc[ EID,'Age'] //根据index(注意这是index的取值,而不是index所在行)选取列Age单元数据 iloc: iloc是选择DataFrame第几行第列(类似于数组,...

    官方教程

    读取写入文件

    官方IO
    读取 写入
    read_csv       to_csv
    read_excel      to_excel
    read_hdf       to_hdf
    read_sql       to_sql
    read_json      to_json
    read_msgpack (experimental)   to_msgpack (experimental)
    read_html       to_html
    read_gbq (experimental)     to_gbq (experimental)
    read_stata       to_stata
    read_sas
    read_clipboard    to_clipboard
    read_pickle      to_pickle//速度比csv快
    读取CSV文件:

    pd.read_csv('foo.csv')   //读取CSV
    # header参数指定从第几行开始生成,且将header行的数据作为列的name(键),header行以前的数据将不会处理。取值为None表示csv中行不做为列的name(键),取值为0表示将csv的第0行作为列的name。| 如果没有传递参数names那么header默认为0;如果传递参数names,那么header默认为None。 
    

    存储为csv文件:

    submission = pd.DataFrame({ 'PassengerId': test_df['PassengerId'],'Survived': predictions })
    submission.to_csv("submission.csv", index=False)
    # index参数是否写入行names键
    

    从dict生成:

    pd.DataFrame.from_dict(df, orient='index')
    
    pd.DataFrame({'a':[1,2], 'b':[2,3]}, columns=['a','b'])  //a,b分别为列
    a	b
    0	1	2
    1	2	3
    
    pd.DataFrame.from_dict({'a':[1,2], 'b':[2,3]}, orient='index') .  //a,b分别为一行
    0	1
    a	1	2
    b	2	3
    

    选择数据

    官方选择教程
    官方多index选择教程

    []:

    df['A']  通过列name(键)选择列
    df[['A', 'B']]  通过list选择列
    df[0:3]  通过隐含的序列(index所在行值)选择行
    df['20130102':'20130104']   通过行index(键)选择行
    dataset[(dataset['Sex'] == i) & (dataset['Pclass'] == j+1)]['Age']        #布尔运算选择数据,以其他列为条件筛选数据,注意做布尔运算时最好将每个运算用括号括起来,像以下这种就会容易出问题:dataset[dataset['TARGET'].notnull() & dataset['need_pre']!=1 ]
    
    加不加[],生成的类型是不同的
    type(data["A1"])
    pandas.core.series.Series
    type(data[["A1"]])
    pandas.core.frame.DataFrame
    

    loc:

    dataset.loc[ dataset.Age.isnull(),'BB']  //age不是null的数据中选择BB列
    train_df.loc[:, ['Age*Class', 'Age', 'Pclass']].head(10)
    dataset.loc[ EID,'Age']  //根据index(注意这个是index的取值,而不是index所在行)选取列Age单元数据
    

    iloc:
    iloc是选择DataFrame第几行第几列(类似于数组,数值下标从0开始)

    df.iloc[3:5,0:2]
    df.iloc[1:3,:]
    df.iat[1,1]
    

    Multi-index索引:

    In [536]: result_df = df.loc[(df.index.get_level_values('A') > 1.7) & (df.index.get_level_values('B') < 666)]
    
    In [537]: result_df
    Out[537]: 
              C
    A   B      
    3.3 222  43
        333  59
    5.5 333  56
    
    In [17]: df.query('0 < A < 4 and 150 < B < 400')                            
    Out[17]:                                                                    
              C                                                                 
    A   B                                                                       
    1.1 222  40                                                                 
    3.3 222  20                                                                 
        333  11
    
    x = df.reset_index()
    In [16]: x.loc[(x.B>=111.0)&(x.B<=500.0)].set_index(['A','B'])
    Out[16]: 
              C
    A   B      
    1.1 111  81
        222  45
    3.3 222  98
        333  13
    5.5 333  89
    

    循环行数据:

    for i, row in colTypes.iterrows():
    # i为dataFrame的index,row为一行数据
    

    使用另一series作为dataframe的筛选条件:

    import numpy as np
    import pandas as pd
    df = pd.DataFrame({ 'A' : [1,2,3,4],
                         'B' : [4,5,6,7]
                      })  
    a = pd.Series([1,2,3,1])
    
    # 对series进行筛选
    (a==1).sum()
    >>>2
    
    # 对dataframe进行筛选
    df[a==1].sum(0)
    >>>
    A     5
    B    11
    dtype: int64
    

    判断是否在序列中筛选:

    meta_df = meta_df[meta_df['asin'].isin( reviews_df['asin'].unique() )]
    new_rate = new_rate[~new_rate['reviewerID'].isin(low_index)]  # not in,取反
    

    计算数据

    重复数值个数统计:

    Series.value_counts() //统计重复重现的数据的个数。返回以数据作为key,以重复个数为value的对象。
    X[c].value_counts().index[0] //最多的那个数
    

    中值计算:

    Series.median() //计算某个轴的中值
    

    计算均值和偏差:

    age_mean = guess_df.mean()
    # 计算均值
    age_std = guess_df.std()
    # 计算标准差
    

    计算众值:

    # freq_port = train_df.Embarked.dropna().mode()[0]
    # mode返回出现最多的数据,可能出现多个,因此返回数组
    

    其他:
    方法            说明
    count          非NA值得数量
    describe        针对series或各dataframe列计算汇总统计
    min max        计算最小值和最大值
    argmin,argmax    计算能够获取到最小值和最大值的索引位置(整数)

    much_nuclei = df_img['nuclei'].argmax()
    plt.imshow(imgs[much_nuclei])
    

    idxmin , idxmax     计算获取到最小值和最大值索引值

    df.idxmax()   //按列
    df.idxmax(axis=1)  //按行
    

    quantile        计算样本的分位数(0到1)
    sum           值得总和

    df.sum()   //按列求和
    df.sum(axis=1)  //按行求和
    

    mean          值得平均数

    df.mean(axis=1) //按行求和,注意,如果存在Nan值会忽略,如果整个都为nan,则取nan
    df.mean(axis=1, skipna = False) //禁止忽略nan值
    

    median         值的算数中位数
    mad           根据平均值计算平均绝对离差
    var            样本值得方差
    std            样本值得标准差
    skew          样本值得偏度(三阶矩)
    kurt           样本值的峰度(四阶矩)
    cumsum         样本值的累计和,累计累积,也就是说从开始位置到当前位置的总和

    df.cumsum()   //按列求累积和,如果当前位置为nan,直接返回nan,如果不是,而前面某个位置是,则忽略前面位置的nan
    df.cumsum(axis=1)  //按行求累积和
    

    cummin,cummax    样本值的累计最大值和累计最小值
    cumprod          样本值的累计积
    diff           计算一阶差分(对时间序列很有用)
    pct_change         计算百分数变化
    isin           判断series,dataframe数据是否在另一个变量其中

    缺失值处理

    性质:
    np.nan == np.nan
    >>> False
     
    np.isnan(np.nan)
    >>> True
     
    np.nan is None
    >>> False
     
    type(np.nan)
    >>> float
    
    检测:
    np.isnan(df)
    pd.isnull(df)
    

    方法       说明
    count      非NA值得数量
    dropna      根据各标签的值中是否存在缺失数据对轴标签进行过滤,可通过阈值调节对缺失值得容忍度
    fillna      用指定值或插值方法(如ffill或bfill)填充确实数据
    isnull      返回一个含有布尔值的对象,这些布尔值表示哪些值是缺失值/NA,该对象的类型与源类型一样
    notnull      isnull的否定式

    存在三种方法来完善连续数字特征:
    1、简单方式:在中值和标准偏差间产生一个随机数
    2、准确方式:通过相关特征猜测缺失值
    3、联合1、2基于特征组合,在中值和偏差间产生一个随机数
    显示缺失值行列:

    train_cat[train_cat.isnull().values==True]
    

    判断某列是否包含nan:

    df.isnull().any() # 判断列是否有 NaN
    df.isnull().all()  # 判断列是否全部为NaN
    

    删除缺失行:

    df.dropna(axis=0, how='any', inplace=True)
    

    缺失值填充:

    dataset['E'] = dataset['E'].fillna(f)
    
    # 对缺失值处进行填充0,参数value可为 scalar, dict, Series, 或者DataFrame,但不能是list;Series应用于每个index,DataFrame应用于每个列。如果不在dict/Series/DataFrame中,将不会被填充
    
    清除空值:.dropna()
    
    dataset.loc[ (dataset.Age.isnull()) & (dataset.Sex == i) & (dataset.Pclass == j+1),'Age'] = guess_ages[i,j]
    # 多条件填充
    

    方法1:

    for dataset in full_data:
        age_avg 	   = dataset['Age'].mean()
        age_std 	   = dataset['Age'].std()
        age_null_count = dataset['Age'].isnull().sum()
        
        age_null_random_list = np.random.randint(age_avg - age_std, age_avg + age_std, size=age_null_count)
        dataset['Age'][np.isnan(dataset['Age'])] = age_null_random_list
        dataset['Age'] = dataset['Age'].astype(int)
    

    方法3:

    # 生成一个空数组来存储Age的猜测值:
            # guess_ages = np.zeros((2,3))
            # guess_ages
    # 遍历Sex和Pclass来猜测Age猜测值:
            # for dataset in combine:
            #     for i in range(0, 2):
            #         for j in range(0, 3):
            #             guess_df = dataset[(dataset['Sex'] == i) & (dataset['Pclass'] == j+1)]['Age'].dropna()
            # 根据相关特征值Pclass,Sex选取数据并除空值
                    #     age_mean = guess_df.mean()
                    # 计算均值
                    #     age_std = guess_df.std()
                    # 计算标准差
                    #     age_guess = rnd.uniform(age_mean - age_std, age_mean + age_std)
    				# 产生随机值
                    #     age_guess = guess_df.median()
    				# 或计算中值
                    #     Convert random age float to nearest .5 age
                    #     guess_ages[i,j] = int( age_guess/0.5 + 0.5 ) * 0.5   
    for i in range(0, 2):
          for j in range(0, 3):
                dataset.loc[ (dataset.Age.isnull()) & (dataset.Sex == i) & (dataset.Pclass == j+1),'Age'] = guess_ages[i,j]
                # 赋值
                dataset['Age'] = dataset['Age'].astype(int)
    

    填充众值:

    # freq_port = train_df.Embarked.dropna().mode()[0]
    # mode返回出现最多的数据,可能出现多个,因此返回数组
    # 填充:
    # for dataset in combine:
    #     dataset['E'] = dataset['E'].fillna(freq_port)
    

    查看数据

    查看键和值:

    train_data = pd.read_csv('train.csv')
    # 查看数据的行键index(index.values)、列键columns(columns.values)、值values
    print(train_data.index)
    print(train_data.index.values)
    

    查看数据统计:

    train_data.info()
    # 主要统计有各列键非空数据数量(便于后面填充空值)、各列数据类型、及数据类型统计(一般object表示字符串对象数量)。
    
    print(train_data.describe())
    # 默认统计数值型数据每列数据平均值,标准差,最大值,最小值,25%,50%,75%比例。
    print(train_data.describe(include=['O']))
    # 统计字符串型数据的总数,取不同值数量,频率最高的取值。其中include参数是结果数据类型白名单,O代表object类型,可用info中输出类型筛选。
    
    print("Before", train_data.shape)
    # 数据行数和列数
    
    describe增强sum形式
    def describe(df):
        return pd.concat([df.describe().T,
                          df.sum().rename('sum'),
                         ], axis=1).T
    
    对行describe
    top = 25
    pd.concat([query_tmp.drop(['0.51800015001004000'], axis=1).head(top).apply(pd.DataFrame.describe, axis=1)
               , query_pd.head(top)['query'],
              query_tmp.head(top)['0.51800015001004000']
              ], axis=1)
    

    查看部分数据内容:

    # 查看前五条和后五条数据,大致了解数据内容
    print(train_data.head())
    print(train_data.tail())
    # 选取三条数据
    data_train.sample(3)
    

    排序:

    features.sort_values(by='EID', ascending=True)
    features.sort_index(axis=1, ascending=True)
    
    python原生排序list和dict
    sorted([wifi for wifi in line[5]], key=lambda x:int(x[1]), reverse=True)[:5]  // 默认从小到大
    sorted(dict.items(),key=lambda x:x[1],reverse=True)[0][0]
    sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) //x,y代表前后两个元素
    

    输出格式控制:

    pandas dataframe数据全部输出,数据太多也不用省略号表示。
    pd.set_option('display.max_columns',None)
    或者
    with option_context('display.max_rows', 10, 'display.max_columns', 5):
    

    某列字符长度统计

    lens = train.comment_text.str.len()
    lens.mean(), lens.std(), lens.max()
    
    print('mean text len:',train["comment_text"].str.count('\S+').mean())
    print('max text len:',train["comment_text"].str.count('\S+').max())
    

    分析数据相关性

    groupby数据:

    train_data[['Pclass','Survived']].groupby(['Pclass'], as_index=False).mean().sort_values(by='Survived',ascending=False)
    # 选取数据中两列,以Pclass分组,计算每个分组内平均值,最后根据Survived平均值降序排列。其中as_index=False不以Pclass做结果行键。
    

    分组后,可以通过size()分组内数据数量,sum()分组内数据和,count()分组内:

    df = DataFrame({'key1':['a','a','b','b','a'],'key2':['one','two','one','two','one'],'data1':np.random.randn(5),'data2':np.random.randn(5)})  
    df  
    #[Out]#       data1     data2 key1 key2  
    #[Out]# 0  0.439801  1.582861    a  one  
    #[Out]# 1 -1.388267 -0.603653    a  two  
    #[Out]# 2 -0.514400 -0.826736    b  one  
    #[Out]# 3 -1.487224 -0.192404    b  two  
    #[Out]# 4  2.169966  0.074715    a  one
    group2 = df.groupby(['key1','key2'])   
    
    group2.size()   
    #[Out]# key1  key2  
    #[Out]# a     one     2     //注意size返回的对象2,1,1,1没有列键
    #[Out]#       two     1  
    #[Out]# b     one     1  
    #[Out]#       two     1  
    #[Out]# dtype: int64  
    group2.count()  
    #[Out]#            data1  data2    
    #[Out]# key1 key2                
    #[Out]# a    one       2      2    //注意count返回的对象2,1,1,1有列键data1,data2
    #[Out]#      two       1      1  
    #[Out]# b    one       1      1  
    #[Out]#      two       1      1
    group2.sum()
    		                data1	data2
    key1	key2		
    a	    one	          0.222249	1.188488
            two	          0.627373	0.406101
    b	    one	         -2.527461	0.267850
            two	         -0.594238	-0.137129  
    
    自定义组内统计函数:
    BRA_CLOSE_DECADE = branch2[['EID', 'B_ENDYEAR']].groupby('EID').agg(lambda df:df[df['B_ENDYEAR']>2007].count())
    
    分组后循环:
    for reviewerID, hist in reviews_df.groupby('reviewerID'):
      pos_list = hist['asin'].tolist()
    

    crosstab数据:
    这里写图片描述

    pd.crosstab(train_data['Title'], train_data['Sex'])
    # 分别以Title(Mrs,Mr等)为行,Sex(female,male)为例,计算出现频数。观察二者的对应关系。
    

    Pivot数据:

    impute_grps = data.pivot_table(values=["LoanAmount"], index=["Gender","Married","Self_Employed"], aggfunc=np.mean)
    

    这里写图片描述
    COV(),CORR()计算
    协方差cov():表示线性相关的方向,取值正无穷到负无穷。协方差为正值,说明一个变量变大另一个变量也变大;协方差取负值,说明一个变量变大另一个变量变小,取0说明两个变量咩有相关关系。
    相关系数corr():不仅表示线性相关的方向,还表示线性相关的程度,取值[-1,1]。也就是说,相关系数为正值,说明一个变量变大另一个变量也变大;取负值说明一个变量变大另一个变量变小,取0说明两个变量没有相关关系。同时,相关系数的绝对值越接近1,线性关系越显著。
    corrwith():计算DataFrame的列(axis=0,默认)或行(axis=1)跟另外一个Series或DataFrame之间的相关系数。
    这里写图片描述
    这里写图片描述

    删除数据

    print(df.drop(0,axis=0)) #删除行,注意原数据不变,返回一个新数据
    print(df.drop(['col1'],axis=1,inplace=True)) #删除列,inplace=True表示直接在原数据修改而不新建对象
    

    合并数据

    对于不同列名,但是内容相同时,可以先修改表的列名。
    concat:
    相同字段的表首尾相接

    result = pd.concat([df1, df2, df3], keys=['x', 'y', 'z']) //keys给合并的表来源加一个辨识号
    

    注意多张表concat后可能会出现index重复情况,这是最好使用reset_index重新组织下index。

    result.reset_index(drop=True)
    
    pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
           keys=None, levels=None, names=None, verify_integrity=False)
    

    append方式:

    # append方式
    result = df1.append([df2, df3])  //将df2,df3追加到df1后返回
    # [官方合并教程](http://pandas.pydata.org/pandas-docs/stable/merging.html#)
    

    pandas的DataFrame的append方法详细介绍
    merge方式:
    merge(left, right, how=‘inner’, on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=(’_x’, ‘_y’), copy=True, indicator=False)
    merge方式用于通过一个或多个键将两个数据集的行连接起来,类似于 SQL 中的 JOIN
    on=None 用于显示指定列名(键名),如果该列在两个对象上的列名不同,则可以通过 left_on=None, right_on=None 来分别指定。或者想直接使用行索引作为连接键的话,就将left_index=False, right_index=False 设为 True。如果没有指定且其他参数也未指定则以两个DataFrame的列名交集做为连接键.
    how=‘inner’ 参数指的是当左右两个对象中存在不重合的键时,取结果的方式:inner 代表交集;outer 代表并集;left 和 right 分别为取一边。
    suffixes=(’_x’,’_y’) 指的是当左右对象中存在除连接键外的同名列时,结果集中的区分方式,可以各加一个小尾巴。
    对于多对多连接,结果采用的是行的笛卡尔积。

    # merge方式
    # 其中how取值 : {‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘inner’类似于SQL中 left outer join,right outer join, full outer join,inner join
    >>> A              >>> B
        lkey value         rkey value
    0   foo  1         0   foo  5
    1   bar  2         1   bar  6
    2   baz  3         2   qux  7
    3   foo  4         3   bar  8
    >>> A.merge(B, left_on='lkey', right_on='rkey', how='outer')
       lkey  value_x  rkey  value_y
    0  foo   1        foo   5
    1  foo   4        foo   5
    2  bar   2        bar   6
    3  bar   2        bar   8
    4  baz   3        NaN   NaN
    5  NaN   NaN      qux   7
    

    join方式:
    其中参数的意义与merge方法基本相同,只是join方法默认为左外连接how=left。默认按索引合并,可以合并相同或相似的索引。主要用于索引上的合并

    join(self, other, on=None, how='left', lsuffix='', rsuffix='',sort=False): 
    

    修改数据

    从数据中提取数据:

    dataset['Title'] = dataset.Name.str.extract(' ([A-Za-z]+)\.', expand=False)
    # 左边dataset['Title']为DataFrame添加一列,右边dataset.Name取出DataFrame的name列,然后对于该Series里的string匹配正则,返回匹配到的正则子集。[官方api](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.extract.html)
    
    # 对列使用函数处理
    meta_df['categories'] = meta_df['categories'].map(lambda x: x[-1][-1])
    
    data['sum_Times']=data['Times'].groupby(['userID']).cumsum()     //统计单个userid组内到当前行之前的所有time和
    

    替换数据:

    dataset['Title'] = dataset['Title'].replace('Ms', 'Miss')
    dataset['Title'].replace('Ms', 'Miss')
    #将一列中数据Ms替换Miss,[详解](https://jingyan.baidu.com/article/454316ab4d0e64f7a6c03a41.html)
    

    将分类数据数值化:

    title_mapping = {"Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Rare": 5}
    for dataset in combine:
         dataset['Title'] = dataset['Title'].map(title_mapping)
    # dataset['Sex'] = dataset['Sex'].map( {'female': 1, 'male': 0} ).astype(int)
    

    转成矩阵:

    big_X_imputed[0:train_df.shape[0]].as_matrix()  //将DataFrame对象转成numpy矩阵
    

    将连续值分成几部分:

    # 自动
    pd.cut(np.array([.2, 1.4, 2.5, 6.2, 9.7, 2.1]), 3,
               labels=["good","medium","bad"])
    [good, good, good, medium, bad, good]
    
    # 手动,一般手动前先自动分析一波。
    # train_df['AgeBand'] = pd.cut(train_df['Age'], 5)
    # train_df[['AgeBand', 'Survived']].groupby(['AgeBand'], as_index=False).mean().sort_values(by='AgeBand', ascending=True)
    # 手动区分
    # for dataset in combine:    
    #     dataset.loc[ dataset['Age'] <= 16, 'Age'] = 0
    #     dataset.loc[(dataset['Age'] > 16) & (dataset['Age'] <= 32), 'Age'] = 1
    #     dataset.loc[ dataset['Age'] > 64, 'Age'] = 4
    

    对每一行或每一列应用函数:

    def num_missing(x):
      return sum(x.isnull())
    #应用列:
    print data.apply(num_missing, axis=0)
    #应用行:
    print data.apply(num_missing, axis=1).head()
    
    def get_title(name):
    	title_search = re.search(' ([A-Za-z]+)\.', name)
    	# If the title exists, extract and return it.
    	if title_search:
    		return title_search.group(1)
    	return ""
    
    for dataset in full_data:
        dataset['Title'] = dataset['Name'].apply(get_title)
    
    df.Cabin = df.Cabin.apply(lambda x: x[0])
    

    将字符型数据转成数值型数值:

    from sklearn import preprocessing
    def encode_features(df_train, df_test):
        features = ['Fare', 'Cabin', 'Age', 'Sex', 'Lname', 'NamePrefix']
        df_combined = pd.concat([df_train[features], df_test[features]])
        
        for feature in features:
            le = preprocessing.LabelEncoder()
            le = le.fit(df_combined[feature])
            df_train[feature] = le.transform(df_train[feature])
            df_test[feature] = le.transform(df_test[feature])
        return df_train, df_test
        
    data_train, data_test = encode_features(data_train, data_test)
    

    除去离群点:
    通过画图如果发现数据中出现一些离群点,应将其除去,使用pandas布尔运算即可:

    train = train[abs(train['length'])<10]
    

    categorial无序特征哑编码one-hot:
    星期为无序特征,如果该特征有三种取值:星期一、星期二、星期三,那么可用三维向量分别表示(1,0,0)(0,1,0)(0,0,1)。使用pd.get_dummies(),如果特征取值过多就应根据数据分布规律将不重要的几个取值归为一类。
    这里写图片描述
    去重相同行:

    alter.duplicated()   //返回每行是否重复的bool值,frame.duplicated(['state'])可选择指定列进行查重。
    alter.duplicated().value_counts()
    alter2 = alter.drop_duplicates()  //除去相同行,注意返回新数据,而不是在旧有的上面修改
    df.drop_duplicates(subset='column A', keep='last') //根据特定列去重,且保留最后一个
    

    修改index名,列键名:

    df.columns = ['a', 'b', 'c', 'd', 'e']
    df.columns = df.columns.str.strip('$')
    df.columns = df.columns.map(lambda x:x[1:])
    
    df.rename(columns=('$a': 'a', '$b': 'b', '$c': 'c', '$d': 'd', '$e': 'e'}, inplace=True) 
    df.rename(columns=lambda x:x.replace('$',''), inplace=True)
    
    investFeature.index.rename('EID', inplace=True)
    

    列转index、index转列:

     df.set_index('date', inplace=True)
    
    df['index'] = df.index
    df.reset_index(level=0, inplace=True)
    df.reset_index(level=['tick', 'obs'])
    df['si_name'] = df.index.get_level_values('si_name') # where si_name is the name of the subindex.
    

    删除index

    df_load.reset_index(inplace=True)
    del df_load['index']
    

    合并列名不同的列:
    先修改列名

    train_cat = train[[0,1,2,3,4]]
    col = train_cat.columns
    for i in range(5,20,4):
        tem = train[[0,i,i+1,i+2,i+3]]
        tem.columns = col
        train_cat = pd.concat([train_cat,tem])
    train_cat.head()
    

    设置一列类型:

    df[[column]] = df[[column]].astype(str)
    

    深浅复制:
    Shallow copy shares data and index with original.
    Deep copy has own copy of data and index.
    Updates to the data shared by shallow copy and original is reflected in both; deep copy remains unchanged.

    deep = s.copy()
    shallow = s.copy(deep=False)
    

    apply返回series数据:
    这样组合成的仍然是dataframe类型

    def mer(x):
        sss = []
        for i,line in x.iterrows():
            sss.extend([line[1],line['pre']])
        return pd.Series(sss)
    merged = sub_cat.groupby([0]).apply(mer)
    

    根据键值和列名合并:

    save.merge(merged, left_on=['a'], right_index=True)
    

    groupby后筛选数据:
    使用filter或transform

    np.random.seed(130)
    df=pd.DataFrame(np.random.randint(3, size=(10,2)), columns=['item_id_copy','sales_quantity'])
    print (df)
       item_id_copy  sales_quantity
    0             1               1
    1             1               2
    2             2               1
    3             0               1
    4             2               0
    5             2               0
    6             0               1
    7             1               2
    8             1               2
    9             1               2
    
    df1 = df.groupby('item_id_copy').filter(lambda x: len(x["asin"].unique()) >= 4)
    print (df1)
       item_id_copy  sales_quantity
    0             1               1
    1             1               2
    7             1               2
    8             1               2
    9             1               2
    
    df1 = df[df.groupby('item_id_copy')['sales_quantity'].transform('size') >= 4]
    print (df1)
       item_id_copy  sales_quantity
    0             1               1
    1             1               2
    7             1               2
    8             1               2
    9             1               2
    

    pandas进行one-hot编码:

    import pandas as pd
    df = pd.DataFrame([  
                ['green' , 'A'],   
                ['red'   , 'B'],   
                ['blue'  , 'A']])  
    df.columns = ['color',  'class'] 
    df = pd.get_dummies(df)
    

    在这里插入图片描述
    one-hot后:
    在这里插入图片描述

    apply返回多列:

    def myfunc1(row):
        C = row['A'] + 10
        D = row['A'] + 50
        return pd.Series([C, D])
    
    df[['C', 'D']] = df.apply(myfunc1 ,axis=1)
    
    def sizes(s):    
        return locale.format("%.1f", s / 1024.0, grouping=True) + ' KB', \
            locale.format("%.1f", s / 1024.0 ** 2, grouping=True) + ' MB', \
            locale.format("%.1f", s / 1024.0 ** 3, grouping=True) + ' GB'
    df_test['size_kb'],  df_test['size_mb'], df_test['size_gb'] = zip(*df_test['size'].apply(sizes))
    

    按列最大最小值归一化

    In [11]: df
    Out[11]:
        a    b
    A  14  103
    B  90  107
    C  90  110
    D  96  114
    E  91  114
    
    In [12]: df -= df.min()
    
    In [13]: df /= df.max() 
    
    In [14]: df
    Out[14]:
              a         b
    A  0.000000  0.000000
    B  0.926829  0.363636
    C  0.926829  0.636364
    D  1.000000  1.000000
    E  0.939024  1.000000
    

    判断一列数据是不是类型混合:

    sorted(sad["size"].unique())
    
    '<' not supported between instances of 'str' and 'float'
    

    对df的某一行的某些值进行修改:

    aad.loc[aad["type"]==2,"cdate"] = aad.loc[aad["type"]==2,"adid"].map(lambda x: cdate_map[x] if x in cdate_map.keys() else -1)
    

    groupby 后提取前多少数据,并生成pandas

    orgin = reviews_map.sort_values(["reviewerID","unixReviewTime"]).groupby("reviewerID",group_keys=False)
    print(orgin.get_group(1))
    history = orgin.apply(lambda df: df[:-2])
    ads = orgin.apply(lambda df: df[-2:])
    
    展开全文
  • 常用的5种数据分析方法有哪些?

    千次阅读 2020-12-22 11:15:10
    常用数据分析方法有5种。 1.对比分析法 对比分析法指通过指标的对比来反映事物数量上的变化,属于统计分析中常用的方法。常见的对比横向对比和纵向对比。 横向对比指的是不同事物在固定时间上的对比...

    常用的数据分析方法有5种。

    常用的5种数据分析方法有哪些?

     

    1.对比分析法

    常用的5种数据分析方法有哪些?

     

    对比分析法指通过指标的对比来反映事物数量上的变化,属于统计分析中常用的方法。常见的对比有横向对比和纵向对比。

    横向对比指的是不同事物在固定时间上的对比,例如,不同等级的用户在同一时间购买商品的价格对比,不同商品在同一时间的销量、利润率等的对比。

    纵向对比指的是同一事物在时间维度上的变化,例如,环比、同比和定基比,也就是本月销售额与上月销售额的对比,本年度1月份销售额与上一年度1月份销售额的对比,本年度每月销售额分别与上一年度平均销售额的对比等。

    利用对比分析法可以对数据规模大小、水平高低、速度快慢等做出有效的判断和评价。
     

    2.分组分析法

    分组分析法是指根据数据的性质、特征,按照一定的指标,将数据总体划分为不同的部分,分析其内部结构和相互关系,从而了解事物的发展规律。根据指标的性质,分组分析法分为属性指标分组和数量指标分组。所谓属性指标代表的是事物的性质、特征等,如姓名、性别、文化程度等,这些指标无法进行运算;而数据指标代表的数据能够进行运算,如人的年龄、工资收入等。分组分析法一般都和对比分析法结合使用。
     

    3.预测分析法

    预测分析法主要基于当前的数据,对未来的数据变化趋势进行判断和预测。预测分析一般分为两种:一种是基于时间序列的预测,例如,依据以往的销售业绩,预测未来3个月的销售额;另一种是回归类预测,即根据指标之间相互影响的因果关系进行预测,例如,根据用户网页浏览行为,预测用户可能购买的商品。
     

    4.漏斗分析法

    漏斗分析法也叫流程分析法,它的主要目的是专注于某个事件在重要环节上的转化率,在互联网行业的应用较普遍。比如,对于信用卡申请的流程,用户从浏览卡片信息,到填写信用卡资料、提交申请、银行审核与批卡,最后用户激活并使用信用卡,中间有很多重要的环节,每个环节的用户量都是越来越少的,从而形成一个漏斗。使用漏斗分析法,能使业务方关注各个环节的转化率,并加以监控和管理,当某个环节的转换率发生异常时,可以有针对性地优化流程,采取适当的措施来提升业务指标。
     

    5.AB测试分析法

    AB 测试分析法其实是一种对比分析法,但它侧重于对比A、B两组结构相似的样本,并基于样本指标值来分析各自的差异。例如,对于某个App的同一功能,设计了不同的样式风格和页面布局,将两种风格的页面随机分配给使用者,最后根据用户在该页面的浏览转化率来评估不同样式的优劣,了解用户的喜好,从而进一步优化产品。

    除此之外,要想做好数据分析,读者还需掌握一定的数学基础,例如,基本统计量的概念(均值、方差、众数、中位数等),分散性和变异性的度量指标(极差、四分位数、四分位距、百分位数等),数据分布(几何分布、二项分布等),以及概率论基础、统计抽样、置信区间和假设检验等内容,通过相关指标和概念的应用,让数据分析结果更具专业性。

    本文摘自《机器学习测试入门与实践》

    常用的5种数据分析方法有哪些?

     

    本书全面且系统地介绍了机器学习测试技术与质量体系建设,分为5部分,共15章。第一部分(第1~4章)涵盖了机器学习、Python编程、数据分析的基础知识;第二部分(第5~7章)介绍了大数据基础、大数据测试指南及相关工具实践;第三部分(第8~10章)讲解了机器学习测试基础、特征专项测试及模型算法评估测试;第四部分(第11~13章)介绍了模型评估平台实践、机器学习工程技术及机器学习的持续交付流程;第五部分(第14章和第15章)探讨了AI(Artificial Intelligence)在测试领域的实践及AI时代测试工程师的未来。

    本书能够帮助读者了解机器学习是如何工作的,了解机器学习的质量保障是如何进行的。工程开发人员和测试工程师通过阅读本书,可以系统化地了解大数据测试、特征测试及模型评估等知识;算法工程师通过阅读本书,可以学习模型评测的方法和拓宽模型工程实践的思路;技术专家和技术管理者通过阅读本书,可以了解机器学习质量保障与工程效能的建设方案。

    展开全文
  • 16种常用数据分析方法汇总

    万次阅读 多人点赞 2017-04-04 16:16:33
    经常会朋友问到一朋友,数据分析常用的分析方法哪些,我需要学习哪个等等之类的问题,今天数据分析精选给大家整理了十六种常用数据分析方法,供大家参考学习。 一、描述统计 描述性统计是指运用制表和...

    经常会有朋友问到一个朋友,数据分析常用的分析方法有哪些,我需要学习哪个等等之类的问题,今天数据分析精选给大家整理了十六种常用的数据分析方法,供大家参考学习。

    一、描述统计

    描述性统计是指运用制表和分类,图形以及计筠概括性数据来描述数据的集中趋势、离散趋势、偏度、峰度。

    1、缺失值填充:常用方法:剔除法、均值法、最小邻居法、比率回归法、决策树法。

    2、正态性检验:很多统计方法都要求数值服从或近似服从正态分布,所以之前需要进行正态性检验。常用方法:非参数检验的K-量检验、P-P图、Q-Q图、W检验、动差法。

    二、假设检验

    1、参数检验

    参数检验是在已知总体分布的条件下(一股要求总体服从正态分布)对一些主要的参数(如均值、百分数、方差、相关系数等)进行的检验 。

    1)U验   使用条件:当样本含量n较大时,样本值符合正态分布

    2)T检验 使用条件:当样本含量n较小时,样本值符合正态分布

    A  单样本t检验:推断该样本来自的总体均数μ与已知的某一总体均数μ0 (常为理论值或标准值)有无差别;

    B  配对样本t检验:当总体均数未知时,且两个样本可以配对,同对中的两者在可能会影响处理效果的各种条件方面扱为相似;

    C 两独立样本t检验:无法找到在各方面极为相似的两样本作配对比较时使用。

    2、非参数检验

    非参数检验则不考虑总体分布是否已知,常常也不是针对总体参数,而是针对总体的某些一股性假设(如总体分布的位罝是否相同,总体分布是否正态)进行检验。

    适用情况:顺序类型的数据资料,这类数据的分布形态一般是未知的。

    A 虽然是连续数据,但总体分布形态未知或者非正态;

    B 体分布虽然正态,数据也是连续类型,但样本容量极小,如10以下;

    主要方法包括:卡方检验、秩和检验、二项检验、游程检验、K-量检验等。

    三、信度分析

    检査测量的可信度,例如调查问卷的真实性。

    分类:

    1、外在信度:不同时间测量时量表的一致性程度,常用方法重测信度

    2、内在信度;每个量表是否测量到单一的概念,同时组成两表的内在体项一致性如何,常用方法分半信度。

    四、列联表分析

    用于分析离散变量或定型变量之间是否存在相关。

    对于二维表,可进行卡方检验,对于三维表,可作Mentel-Hanszel分层分析。

    列联表分析还包括配对计数资料的卡方检验、行列均为顺序变量的相关检验。

    五、相关分析

    研究现象之间是否存在某种依存关系,对具体有依存关系的现象探讨相关方向及相关程度。

    1、单相关: 两个因素之间的相关关系叫单相关,即研究时只涉及一个自变量和一个因变量;

    2、复相关 :三个或三个以上因素的相关关系叫复相关,即研究时涉及两个或两个以上的自变量和因变量相关;

    3、偏相关:在某一现象与多种现象相关的场合,当假定其他变量不变时,其中两个变量之间的相关关系称为偏相关。

    六、方差分析

    使用条件:各样本须是相互独立的随机样本;各样本来自正态分布总体;各总体方差相等。

    分类

    1、单因素方差分析:一项试验只有一个影响因素,或者存在多个影响因素时,只分析一个因素与响应变量的关系

    2、多因素有交互方差分析:一顼实验有多个影响因素,分析多个影响因素与响应变量的关系,同时考虑多个影响因素之间的关系

    3、多因素无交互方差分析:分析多个影响因素与响应变量的关系,但是影响因素之间没有影响关系或忽略影响关系

    4、协方差分祈:传统的方差分析存在明显的弊端,无法控制分析中存在的某些随机因素,使之影响了分祈结果的准确度。协方差分析主要是在排除了协变量的影响后再对修正后的主效应进行方差分析,是将线性回归与方差分析结合起来的一种分析方法,

    七、回归分析

    分类:

    1、一元线性回归分析:只有一个自变量X与因变量Y有关,X与Y都必须是连续型变量,因变量y或其残差必须服从正态分布。

    2、多元线性回归分析

    使用条件:分析多个自变量与因变量Y的关系,X与Y都必须是连续型变量,因变量y或其残差必须服从正态分布 。

    1)变呈筛选方式:选择最优回归方程的变里筛选法包括全横型法(CP法)、逐步回归法,向前引入法和向后剔除法

    2)横型诊断方法:

    A 残差检验: 观测值与估计值的差值要艰从正态分布

    B 强影响点判断:寻找方式一般分为标准误差法、Mahalanobis距离法

    C 共线性诊断:

    • 诊断方式:容忍度、方差扩大因子法(又称膨胀系数VIF)、特征根判定法、条件指针CI、方差比例
    • 处理方法:增加样本容量或选取另外的回归如主成分回归、岭回归等

    3、Logistic回归分析

    线性回归模型要求因变量是连续的正态分布变里,且自变量和因变量呈线性关系,而Logistic回归模型对因变量的分布没有要求,一般用于因变量是离散时的情况

    分类:

    Logistic回归模型有条件与非条件之分,条件Logistic回归模型和非条件Logistic回归模型的区别在于参数的估计是否用到了条件概率。

    4、其他回归方法 非线性回归、有序回归、Probit回归、加权回归等

    八、聚类分析

    样本个体或指标变量按其具有的特性进行分类,寻找合理的度量事物相似性的统计量。

    1、性质分类:

    Q型聚类分析:对样本进行分类处理,又称样本聚类分祈 使用距离系数作为统计量衡量相似度,如欧式距离、极端距离、绝对距离等

    R型聚类分析:对指标进行分类处理,又称指标聚类分析 使用相似系数作为统计量衡量相似度,相关系数、列联系数等

    2、方法分类:

    1)系统聚类法: 适用于小样本的样本聚类或指标聚类,一般用系统聚类法来聚类指标,又称分层聚类

    2)逐步聚类法 :适用于大样本的样本聚类

    3)其他聚类法 :两步聚类、K均值聚类等

    九、判别分析

    1、判别分析:根据已掌握的一批分类明确的样品建立判别函数,使产生错判的事例最少,进而对给定的一个新样品,判断它来自哪个总体

    2、与聚类分析区别

    1)聚类分析可以对样本逬行分类,也可以对指标进行分类;而判别分析只能对样本

    2)聚类分析事先不知道事物的类别,也不知道分几类;而判别分析必须事先知道事物的类别,也知道分几类

    3)聚类分析不需要分类的历史资料,而直接对样本进行分类;而判别分析需要分类历史资料去建立判别函数,然后才能对样本进行分类

    3、进行分类 :

    1)Fisher判别分析法 :

    以距离为判别准则来分类,即样本与哪个类的距离最短就分到哪一类, 适用于两类判别;

    以概率为判别准则来分类,即样本属于哪一类的概率最大就分到哪一类,适用于

    适用于多类判别。

    2)BAYES判别分析法 :

    BAYES判别分析法比FISHER判别分析法更加完善和先进,它不仅能解决多类判别分析,而且分析时考虑了数据的分布状态,所以一般较多使用;

    十、主成分分析

    将彼此梠关的一组指标变适转化为彼此独立的一组新的指标变量,并用其中较少的几个新指标变量就能综合反应原多个指标变量中所包含的主要信息 。

    十一、因子分析

    一种旨在寻找隐藏在多变量数据中、无法直接观察到却影响或支配可测变量的潜在因子、并估计潜在因子对可测变量的影响程度以及潜在因子之间的相关性的一种多元统计分析方法

    与主成分分析比较:

    相同:都能够起到済理多个原始变量内在结构关系的作用

    不同:主成分分析重在综合原始变适的信息.而因子分析重在解释原始变量间的关系,是比主成分分析更深入的一种多元统计方法

    用途:

    1)减少分析变量个数

    2)通过对变量间相关关系探测,将原始变量进行分类

    十二、时间序列分析

    动态数据处理的统计方法,研究随机数据序列所遵从的统计规律,以用于解决实际问题;时间序列通常由4种要素组成:趋势、季节变动、循环波动和不规则波动。

    主要方法:移动平均滤波与指数平滑法、ARIMA横型、量ARIMA横型、ARIMAX模型、向呈自回归横型、ARCH族模型

    十三、生存分析

    用来研究生存时间的分布规律以及生存时间和相关因索之间关系的一种统计分析方法

    1、包含内容:

    1)描述生存过程,即研究生存时间的分布规律

    2)比较生存过程,即研究两组或多组生存时间的分布规律,并进行比较

    3)分析危险因素,即研究危险因素对生存过程的影响

    4)建立数学模型,即将生存时间与相关危险因素的依存关系用一个数学式子表示出来。

    2、方法:

    1)统计描述:包括求生存时间的分位数、中数生存期、平均数、生存函数的估计、判断生存时间的图示法,不对所分析的数据作出任何统计推断结论

    2)非参数检验:检验分组变量各水平所对应的生存曲线是否一致,对生存时间的分布没有要求,并且检验危险因素对生存时间的影响。

    A 乘积极限法(PL法)

    B 寿命表法(LT法)

    3)半参数横型回归分析:在特定的假设之下,建立生存时间随多个危险因素变化的回归方程,这种方法的代表是Cox比例风险回归分析法

    4)参数模型回归分析:已知生存时间服从特定的参数横型时,拟合相应的参数模型,更准确地分析确定变量之间的变化规律

    十四、典型相关分析

    相关分析一般分析两个变里之间的关系,而典型相关分析是分析两组变里(如3个学术能力指标与5个在校成绩表现指标)之间相关性的一种统计分析方法。

    典型相关分析的基本思想和主成分分析的基本思想相似,它将一组变量与另一组变量之间单变量的多重线性相关性研究转化为对少数几对综合变量之间的简单线性相关性的研究,并且这少数几对变量所包含的线性相关性的信息几乎覆盖了原变量组所包含的全部相应信息。

    十五、R0C分析

    R0C曲线是根据一系列不同的二分类方式(分界值或决定阈).以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线

    用途:

    1、R0C曲线能很容易地査出任意界限值时的对疾病的识别能力

    用途 ;

    2、选择最佳的诊断界限值。R0C曲线越靠近左上角,试验的准确性就越高;

    3、两种或两种以上不同诊断试验对疾病识别能力的比较,一股用R0C曲线下面积反映诊断系统的准确性。

    十六、其他分析方法

    多重响应分析、距离分祈、项目分祈、对应分祈、决策树分析、神经网络、系统方程、蒙特卡洛模拟等。

    展开全文
  • 【数据分析】最常用数据分析方法(干货)

    万次阅读 多人点赞 2018-09-25 11:51:54
    数据分析方法论 1、PEST分析法 2、SWOT分析法 3、5W2H分析法 4、4P理论 5、AARRR 数据分析的七方法 1、趋势分析 2、多维分解 3、用户分群 4、用户细查 5、漏斗分析 6、留存分析 7、A/B测试与A/A测试 ...
  • 常用的四种大数据分析方法

    万次阅读 多人点赞 2017-09-19 09:32:13
    本文主要讲述数据挖掘分析领域中,最常用的四种数据分析方法:描述型分析、诊断型分析、预测型分析和指令型分析。
  • 产品,如果你不能衡量它,你就不能了解它,自然而然,你就无法改进它。数据说到底,就是这样工具...本期主要讨论些数据分析的三个常用方法: 数据趋势分析 数据对比分析 数据细分分析 1.数据趋势分析 趋势分析...
  • 统计学常用数据分析方法总结

    千次阅读 2019-10-31 15:54:45
    描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描述统计分为集中趋势分析和离中趋势分析和相关分析三大部分。 集中趋势分析 ...
  • 精心整理了7种常用数据分析方法(建议收藏)

    万次阅读 多人点赞 2019-11-08 08:30:00
    一位朋友最近吐槽,他...今天DataHunter数猎哥就来给大家分享7种最常用数据分析方法,让你轻松运用数据分析解决实际工作问题,提升核心竞争力。一、漏斗分析法漏斗分析法能够科学反映用户行为状态,以及从起点...
  • 数据分析方法

    万次阅读 2018-01-29 23:29:32
    数据分析方法论 确定分析思路需要以营销、管理等理论为指导。这些 跟数据分析相 关的营销、...数据分析方法论主要用来指导数据分析师进行一次完整的数据分析,它 更多的是指数据分析思路,比如主要从哪几方面开展数据
  • 常用的四种大数据分析方法

    千次阅读 2017-12-18 20:50:05
    本文主要讲述数据挖掘分析领域中,最常用的四种数据分析方法:描述型分析、诊断型分析、预测型分析和指令型分析。 当刚涉足数据挖掘分析领域的分析师被问及,数据挖掘分析人员最重要的能力是什么时,他们给出了...
  • 中文“预测”的含义在“英语”情境下则两种含义:evaluate,“估算”,前文归因的方法中,是从因变量Y发现自变量X,也就是Y-->X,“估算”则是“归因”的逆操...
  • 数据分析常用的降维方法

    千次阅读 2014-07-22 16:58:35
    主成分分析
  • 什么是数据分析方法

    万次阅读 2018-09-04 09:26:21
    数据分析方法论 确定分析思路需要以营销、管理等理论为指导。...常用的数据数据分析方法:PEST分析法、5W2H分析法、逻辑树分析法、4P营销理论、用户行为理论。   数据分析方法论的重要性 很多人在做数...
  • 数据挖掘进行数据分析常用方法

    千次阅读 2014-06-25 11:21:41
    利用数据挖掘进行数据分析常用方法主要分类、回归分析、聚类、关联规则、特征、变化和偏差分析、Web页挖掘等, 它们分别从不同的角度对数据进行挖掘。  ① 分类。分类是找出数据库中一组数据对象的共同...
  • 16种常用数据统计分析方法汇总

    万次阅读 2019-04-24 16:43:00
    经常会朋友问到一朋友,数据分析常用的分析方法哪些,我需要学习哪个等等之类的问题,今天数据分析精选给大家整理了十六种常用数据分析方法,供大家参考学习。 (注:这些统计分析方法基本都是统计学的方法...
  • 作者:阿平@zhihu来源:知乎一、描述统计描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描...
  • 数据分析常用的16种方法

    千次阅读 2018-09-11 20:24:43
    描述性统计是指运用制表和分类,图形以及计筠概括性数据来描述数据的集中趋势、离散趋势、偏度、峰度。 1、缺失值填充:常用方法:剔除法、均值法、最小邻居法、比率回归法、决策树法。 2、正态性检验:很多统计...
  • 提取出日期数据中的年月日 在数据分析任务中经常会遇到时间数据(比如20190825或者2019-08-25)那么该如何对数据中的年月日进行分离呢?
  • 常用的差异分析方法简介

    千次阅读 2021-04-06 11:01:15
    但是在实际应用中,大多数人不知道该使用种方法来处理自己的数据,所以今天我就来介绍下目前常用的差异分析方法及其适用场景。 1.方差分析、T检验、卡方检验、秩和检验 其实核心的区别在于:数据类型不一样...
  • 常见的9种大数据分析方法

    万次阅读 2019-01-23 16:01:30
    数据分析是从数据中提取价值信息的过程,过程中需要对数据进行各种处理和归类,只有掌握了正确的数据分类方法和数据处理模式,才能起到事半功倍的效果,以下是数据分析员必备的9种数据分析思维模式: 1. 分类 ...
  • 数据分析常用的100指标和术语

    千次阅读 多人点赞 2019-09-05 18:31:47
    3、数据分析名词解释 一、互联网常用名词解释 1、PV(Page View)页面浏览量 指某段时间内访问网站或某一页面的用户的总数量。通常用来衡量一篇文章或一次活动带来的流量效果,也是评价网站日常流量数据的重要...
  • 医疗大数据分析几个重点方向

    千次阅读 2018-09-25 16:59:31
    医疗大数据平台方案采用传统的关系型数据库与大数据平台的混合设计,整体基础数据平台构成包括联机事务库,数据整合交换,大数据平台,数据集市,探索分析数据驱动应用这六部分: 实时事务库 联机事务库是企业...
  • 数据分析方法汇总

    千次阅读 2014-12-31 10:15:24
    这篇文章是从人大经济论坛...1、缺失值填充:常用方法:剔除法、均值法、最小邻居法、比率\回归法、决策树法。 2、正态性检验:很多统计方法都要求数值服从或近似服从正态分布,所以之前需要进行正态性检验。常用
  • 数据分析方法论(6种方法,8思路)

    千次阅读 多人点赞 2020-02-26 17:23:05
    在介绍数据分析方法论和思路之前,我们还是先不厌其烦地看一下数据分析的流程,简单来说分为以下六步骤: 1、明确分析的目的,提出问题。只有弄清楚了分析的目的是什么,才能准确定位分析因子,提出价值的问题...
  • 常用数据科学方法总结梳理笔记

    千次阅读 2019-05-10 16:27:06
    常用数据科学方法 【未经允许,不得转载】 ...
  • 本文比较了用于数据准备的方法,它们分别是提取-变换-加载批处理(ETL)、流式获取和数据整理。本文还讨论了数据准备如何与可视化分析相关联,以及不同用户角色(如数据科学家或业务分析人员)应如何共同构建...
  • 数据分析常用6种分析思路

    万次阅读 多人点赞 2019-03-19 14:20:57
    作为数据分析师,你是否常因为缺乏分析思路,而被以下问题影响到幸福感(甚至怀疑人生)? 1. 新上线某个产品,需要监控转化率效果,既要看总体情况,也要看细分渠道; 2. 策划营销活动,预算有限...
  • 数据仓库常用几种建模方法

    万次阅读 2019-02-18 14:43:31
    数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世界中事务的相互关系的一种映射。在这里,数据模型表现的抽象的是实体和实体之间的关系,通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 390,670
精华内容 156,268
关键字:

常用的数据分析方法有哪几个