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

    万次阅读 多人点赞 2017-03-20 23:33:48
    fillna 用指定值或插值方法(如ffill或bfill)填充确实数据 isnull 返回一个含有布尔值的对象,这些布尔值表示哪些值是缺失值/NA,该对象的类型与源类型一样 notnull isnull的否定式 存在三种方法来完善连续数字特征...

    官方教程

    读取写入文件

    官方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:])
    
    展开全文
  • 孤立点分析常用方法

    千次阅读 2012-07-11 11:43:40
    Hawkins给出了其本质性定义: 孤立点是在数据集中与众不同的数据, 使人怀疑这些数据并非随机偏差, 而是产生于完全不同的机制。一般的孤立点挖掘中存在两个基本任务:一是在给定的数据集合中定义什么样的数据可以被认为...
    孤立点是指数据集中那些小模式数据,它可能是度量或执行错误所导致的, 也可能是固有数据变异性的结果。Hawkins给出了其本质性定义: 孤立点是在数据集中与众不同的数据, 使人怀疑这些数据并非随机偏差, 而是产生于完全不同的机制。一般的孤立点挖掘中存在两个基本任务:一是在给定的数据集合中定义什么样的数据可以被认为不一致的;
     二是找到一个有效的方法来挖掘这样的孤立点。
       传统的孤立点挖掘算法
       目前已有的传统的孤立点挖掘算法主要包括四类算法基于统计的方法,基于距离的方法,基于密度的方法,基于偏离的方法和基于聚类的挖掘算法。
       基于统计的方法:
       基于统计的算法基本思想是根据数据集的特性事先假定一个数据分布的概率模型,然后根据模型的不一致性来确定异常。存在的问题是, 在许多情况下, 我们并不知道数据的分布, 而且现实数据也往往不符合任何一种理想状态的数学分布,这样就对后期的孤立点发掘产生了很大的困难。另一方面基于统计的方法比较适合于低维空间的孤立点挖掘,而实际的数据大多都是高维空间的数据,在这种情况下,事先估算数据的分布是很困难的.
        基于距离的方法:
        基于距离的算法的基本思想是以距离的大小来检测小模式,孤立点被认为是没有足够多的邻居。它可以描述为在数据对象集合中N中,至少有P个对象和对象O的距离大于d, 则对象O是一个带参数P和d的基于距离的异常点。基于距离的检测方法的优势在于他不需要事先了解数据集本身的特性,是与领域无关的,但是问题在于对参数P和D估计的困难性。不同的P和D参数的确定会对结果带来很大的影响。由于基于距离的方法的参数P和D是一定的所以发现的孤立点是全局孤立点。
       基于密度的方法:
       基于距离的方法对全局各个聚类的数据提出了统一的P和D的参数,但是如果各个聚类本身的密度存在不同,则基于距离的方法则出出现问题,因此提出了基于密度模型的局部异常点挖掘算法,通过局部异常点因子LOF的计算来确定异常点, 只要一个对象的LOF远大于1, 它可能就是一个异常点。簇内靠近核心点的对象的LOF接近于1,处于簇的边缘或是簇的外面的对象的LOF相对较大,这样便能检测到局部异常点,更贴近于实际的数据集的特性。这种传统的局部异常点的挖掘算法的主要问题在于局部范围的参数Minpts值存在选择上的困难,可以运用多粒度偏差因子代替Minpts来评价,这样便能得到比较好的解决方案。
       基于偏离的方法:
       基于偏差的方法的基本思想是通过检查一组对象的主要特征来确定异常点, 如果一个对象的特征与给定的”描述”过分”偏离” , 则该对象被认为是异常点。现有的基于偏离的方法主要有序列异常技术和OLAP 数据立方体方法。前者是以样本集的总体的方差为相异度函数,描述了样本集的基本特征,所有背离这些特征的样本都是异常样本,这种方法在对异常存在的假设太过理想化, 对现实复杂数据效果不太好。而后者利用在大规模的多维数据中采用数据立方体确定反常区域,如果一个立方体的单元值显著地不同于根据统计模型得到的期望值,该单元值被认为是一个孤立点,当存在许多涉及多层概念层次的维时, 人工探测变得非常困难。
      基于聚类的方法:
    基于聚类的方法的基本思想是将孤立点挖掘的过程转换成聚类的过程。首先将数据集利用已经成熟的模型进行聚类分析,是数据集形成簇,而那些不在簇中的样本点即被视为异常点进行再处理。除了上述所述的4中基本的聚类方法外,还包括基于网格的的方法等。
    展开全文
  • 常用数据分析方法总结

    千次阅读 2019-11-02 14:06:23
    最近优化一个画像产品,用到一些数据分析方法,这里总结一下。 主要参考:https://www.jianshu.com/p/809fb2261b23,补充一些细节 一、描述统计 描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对...

    最近优化一个画像产品,用到一些数据分析方法,这里总结一下。

    主要参考:https://www.jianshu.com/p/809fb2261b23 ,补充一些细节

    一、描述统计

    描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描述统计分为集中趋势分析和离中趋势分析和相关分析三大部分。

    1.集中趋势分析

    集中趋势分析主要靠平均数、中数、众数等统计指标来表示数据的集中趋势。例如被试的平均成绩多少?是正偏分布还是负偏分布?

    正偏态分布是相对正太分布而言的。当用累加次数曲线法检验数据是否为正态分布时,若M>Me>Mo时,即平均数大于中位数,中位数又大于众数,则数据的分布是属于正偏态分布。正偏态分布的特征是曲线的最高点偏向X轴的左边,位于左半部分的曲线比正态分布的曲线更陡,而右半部分的曲线比较平缓,并且其尾线比起左半部分的曲线更长,无限延伸直到接近X轴。

    负偏态分布也是相对正态分布而言的。当用累加次数曲线法检验数据是否为正态分布时,若M<Me<Mo时,即平均数小于中数,中数又小于众数,则数据的分布是属于负偏态分布。负偏态分布的特征是曲线的最高点偏向X轴的右边,位于右半部分的曲线比正态分布的曲线更陡,而左半部分的曲线比较平缓,并且其尾线比起右半部分的曲线更长,无限延伸直到接近X轴。

    用偏度系数反映数据分布偏移中心位置的程度,记为SK:

    SK= (均值一中位数)/标准差.

    在正态分布条件下,由于均值等于中位数,所以偏度系数等于0。当偏度系数大于0时,则为正偏态;当偏度系数小于0时,则为负偏态

    2.离中趋势分析

    离中趋势分析主要靠全距、四分差、平均差、方差(协方差:用来度量两个随机变量关系的统计量)、标准差等统计指标来研究数据的离中趋势。例如,我们想知道两个教学班的语文成绩中,哪个班级内的成绩分布更分散,就可以用两个班级的四分差或百分点来比较。

    全距是用来表示统计资料中的变异量数,其最大值与最小值之间的差距

    四分差,quartile deviation。它是上四分位数(Q3,即位于75%)与下四分位数(Q1,即位于25%)的差。Q = Q3-Q1

    平均差(Mean Deviation)是表示各个变量值之间差异程度的数值之一。指各个变量值同平均数的离差绝对值的算数平均数。

    3.相关分析

    相关分析探讨数据之间是否具有统计学上的关联性。这种关系既包括两个数据之间的单一相关关系——如年龄与个人领域空间之间的关系,也包括多个数据之间的多重相关关系——如年龄、抑郁症发生率、个人领域空间之间的关系;既包括A大B就大(小),A小B就小(大)的直线相关关系,也可以是复杂相关关系(A=Y-B*X);既可以是A、B变量同时增大这种正相关关系,也可以是A变量增大时B变量减小这种负相关,还包括两变量共同变化的紧密程度——即相关系数。

    实际上,相关关系唯一不研究的数据关系,就是数据协同变化的内在根据——即因果关系。获得相关系数有什么用呢?简而言之,有了相关系数,就可以根据回归方程,进行A变量到B变量的估算,这就是所谓的回归分析,因此,相关分析是一种完整的统计研究方法,它贯穿于提出假设,数据研究,数据分析,数据研究的始终。

    例如,我们想知道对监狱情景进行什么改造,可以降低囚徒的暴力倾向。我们就需要将不同的囚舍颜色基调、囚舍绿化程度、囚室人口密度、放风时间、探视时间进行排列组合,然后让每个囚室一种实验处理,然后用因素分析法找出与囚徒暴力倾向的相关系数最高的因素。

    假定这一因素为囚室人口密度,我们又要将被试随机分入不同人口密度的十几个囚室中生活,继而得到人口密度和暴力倾向两组变量(即我们讨论过的A、B两列变量)。然后,我们将人口密度排入X轴,将暴力倾向分排入Y轴,获得了一个很有价值的图表,当某典狱长想知道,某囚舍扩建到N人/间囚室,暴力倾向能降低多少。我们可以当前人口密度和改建后人口密度带入相应的回归方程,算出扩建前的预期暴力倾向和扩建后的预期暴力倾向,两数据之差即典狱长想知道的结果。

    4.推论统计

    推论统计是统计学乃至于心理统计学中较为年轻的一部分内容。它以统计结果为依据,来证明或推翻某个命题。具体来说,就是通过分析样本与样本分布的差异,来估算样本与总体、同一样本的前后测成绩差异,样本与样本的成绩差距、总体与总体的成绩差距是否具有显著性差异。

    例如,我们想研究教育背景是否会影响人的智力测验成绩。可以找100名24岁大学毕业生和100名24岁初中毕业生。采集他们的一些智力测验成绩。用推论统计方法进行数据处理,最后会得出类似这样儿的结论:“研究发现,大学毕业生组的成绩显著高于初中毕业生组的成绩,二者在0.01水平上具有显著性差异,说明大学毕业生的一些智力测验成绩优于中学毕业生组。”

    5.正态性检验

    很多统计方法都要求数值服从或近似服从正态分布,所以之前需要进行正态性检验。

    常用方法:非参数检验的K-量检验、P-P图、Q-Q图、W检验、动差法。

    二、假设检验

    1.参数检验

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

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

    u检验是一种用来评估两个独立的顺序数据样本是否来自同一个总体的非参数检验

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

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

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

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

    补充:

    在概率学和统计学中,t-分布t-distribution)用于根据小样本来估计呈正态分布且方差未知的总体的均值。如果总体方差已知(例如在样本数量足够多时),则应该用正态分布来估计总体均值。假设X服从标准正态分布N(0,1),Y服从分布,那么的分布称为自由度为n的t分布,记为,t分布是一簇曲线,其形态变化与n(确切地说与自由度df)大小有关。自由度df越小,t分布曲线越低平;自由度df越大,t分布曲线越接近标准正态分布(u分布)曲线。随着自由度逐渐增大,t分布逐渐接近标准正态分布。标准正态分布,又称作u分布。所以,u分布是t分布的极限。

    u检验和t检验可用于样本均数与总体均数的比较以及两样本均数的比较。理论上要求样本来自正态分布总体。但在实用时,只要样本例数n较大,或n小但总体标准差σ已知时,就可应用u检验;n小且总体标准差σ未知时,可应用t检验,但要求样本来自正态分布总体。两样本均数比较时还要求两总体方差相等。

    比较的目的是推断样本所代表的未知总体均数μ与已知总体均数μ0有无差别。通常把理论值、标准值或经大量调查所得的稳定值作为μ0.根据样本例数n大小和总体标准差σ是否已知选用u检验或t 检验。

    若样本含量n较大,或n虽小但总体方差σ2已知,用u检验。u检验以u分布为基础,u分布是t分布的极限分布,当样本含量凡较大时(如n>60),t分布近似u分布,t检验等同u检验。u分布和u检验也称z分布和z检验。u检验统计量公式为

    式中,为样本均数;μ0为已知总体均数;n为样本含量;为标准差的估计值;为标准差的理论值。

    在成组设计的两样本均数比较的统计量u值计算中,需计算出两样本均数差的标准差,因此统计量u的计算公式为:

    t检验可分为单总体检验和双总体检验,以及配对样本检验

    单样本T检验是检验某个变量的总体均值和某指定值之间是否存在显著差异。T检验的前提是样本总体服从正态分布。

    当总体分布是正态分布,如总体标准差未知且样本容量小于30,那么样本平均数与总体平均数的离差统计分布呈t分布。

    单总体t检验统计量为:

    双总体t检验是检验两个样本平均数与其各自所代表的总体的差异是否显著。双总体t检验又分为两种情况,一是独立样本t检验(各实验处理组之间毫无相关存在,即为独立样本),该检验用于检验两组非相关样本被试所获得的数据的差异性;一是配对样本t检验,用于检验匹配而成的两组被试获得的数据或同组被试在不同条件下所获得的数据的差异性,这两种情况组成的样本即为相关样本。

    1)独立样本t检验统计量为:

    (2)配对样本检验

    当我们计算出对应的t/u统计量,查表即可。所以,本质t检验和u检验是一致的,只是一个采用样本均值和已知样本均值的离差统计分布成u分布,一个采用样本均值和已知样本均值离差统计分布呈t分布。

    2.非参数检验

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

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

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

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

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

    三、信度分析

    信度(Reliability)即可靠性,它是指采用同样的方法对同一对象重复测量时所得结果的一致性程度。信度指标多以相关系数表示,大致可分为三类:稳定系数(跨时间的一致性),等值系数(跨形式的一致性)和内在一致性系数(跨项目的一致性)。信度分析的方法主要有以下四种:重测信度法、复本信度法、折半信度法、α信度系数法。

    1.方法

    1)重测信度法编辑:这一方法是用同样的问卷对同一组被调查者间隔一定时间重复施测,计算两次施测结果的相关系数。显然,重测信度属于稳定系数。重测信度法特别适用于事实式问卷,如性别、出生年月等在两次施测中不应有任何差异,大多数被调查者的兴趣、爱好、习惯等在短时间内也不会有十分明显的变化。如果没有突发事件导致被调查者的态度、意见突变,这种方法也适用于态度、意见式问卷。由于重测信度法需要对同一样本试测两次,被调查者容易受到各种事件、活动和他人的影响,而且间隔时间长短也有一定限制,因此在实施中有一定困难。

    2)复本信度法编辑:让同一组被调查者一次填答两份问卷复本,计算两个复本的相关系数。复本信度属于等值系数。复本信度法要求两个复本除表述方式不同外,在内容、格式、难度和对应题项的提问方向等方面要完全一致,而在实际调查中,很难使调查问卷达到这种要求,因此采用这种方法者较少。

    3)折半信度法编辑:折半信度法是将调查项目分为两半,计算两半得分的相关系数,进而估计整个量表的信度。折半信度属于内在一致性系数,测量的是两半题项得分间的一致性。这种方法一般不适用于事实式问卷(如年龄与性别无法相比),常用于态度、意见式问卷的信度分析。

    在问卷调查中,态度测量最常见的形式是5级李克特(Likert)量表(李克特量表(Likert scale)是属评分加总式量表最常用的一种,属同一构念的这些项目是用加总方式来计分,单独或个别项目是无意义的。它是由美国社会心理学家李克特于1932年在原有的总加量表基础上改进而成的。该量表由一组陈述组成,每一陈述有"非常同意"、"同意"、"不一定"、"不同意"、"非常不同意"五种回答,分别记为5、4、3、2、1,每个被调查者的态度总分就是他对各道题的回答所得分数的加总,这一总分可说明他的态度强弱或他在这一量表上的不同状态。)。

    进行折半信度分析时,如果量表中含有反意题项,应先将反意题项的得分作逆向处理,以保证各题项得分方向的一致性,然后将全部题项按奇偶或前后分为尽可能相等的两半,计算二者的相关系数(rhh,即半个量表的信度系数),最后用斯皮尔曼-布朗(Spearman-Brown)公式:求出整个量表的信度系数(ru)。

    4)α信度系数法:α信度系数是目前最常用的信度系数,其公式为:

    α=(k/(k-1))*(1-(∑Si^2)/ST^2)

    其中,K为量表中题项的总数, Si^2为第i题得分的题内方差, ST^2为全部题项总得分的方差。从公式中可以看出,α系数评价的是量表中各题项得分间的一致性,属于内在一致性系数。这种方法适用于态度、意见式问卷(量表)的信度分析。

    总量表的信度系数最好在0.8以上,0.7-0.8之间可以接受;分量表的信度系数最好在0.7以上,0.6-0.7还可以接受。Cronbach 's alpha系数如果在0.6以下就要考虑重新编问卷。用于检査测量的可信度,例如调查问卷的真实性。

    2.分类

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

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

    四、列联表分析

    列联表是观测数据按两个或更多属性(定性变量)分类时所列出的频数表。

    1.简介

    若总体中的个体可按两个属性A、B分类,A有r个等级A1,A2,…,Ar,B有c个等级B1,B2,…,Bc,从总体中抽取大小为n的样本,设其中有nij个个体的属性属于等级Ai和Bj,nij称为频数,将r×c个nij排列为一个r行c列的二维列联表,简称r×c表。若所考虑的属性多于两个,也可按类似的方式作出列联表,称为多维列联表。

    列联表又称交互分类表,所谓交互分类,是指同时依据两个变量的值,将所研究的个案分类。交互分类的目的是将两变量分组,然后比较各组的分布状况,以寻找变量间的关系。用于分析离散变量或定型变量之间是否存在相关。

    列联表分析的基本问题是,判明所考察的各属性之间有无关联,即是否独立。如在前例中,问题是:一个人是否色盲与其性别是否有关?在r×с表中,若以pi、pj和pij分别表示总体中的个体属于等级Ai,属于等级Bj和同时属于Ai、Bj的概率(pi,pj称边缘概率,pij称格概率),“A、B两属性无关联”的假设可以表述为H0:pij=pi·pj,(i=1,2,…,r;j=1,2,…,с),未知参数pij、pi、pj的最大似然估计(见点估计)分别为行和及列和(统称边缘和)为样本大小。根据K.皮尔森(1904)的拟合优度检验或似然比检验(见假设检验),当h0成立,且一切pi>0和pj>0时,统计量的渐近分布是自由度为(r-1)(с-1)的Ⅹ分布,式中Eij=(ni·nj)/n称为期望频数。当n足够大,且表中各格的Eij都不太小时,可以据此对h0作检验:若Ⅹ值足够大,就拒绝假设h0,即认为A与B有关联。在前面的色觉问题中,曾按此检验,判定出性别与色觉之间存在某种关联。

    2.需要注意

    若样本大小n不很大,则上述基于渐近分布的方法就不适用。对此,在四格表情形,R.A.费希尔(1935)提出了一种适用于所有n的精确检验法。其思想是在固定各边缘和的条件下,根据超几何分布(见概率分布),可以计算观测频数出现任意一种特定排列的条件概率。把实际出现的观测频数排列,以及比它呈现更多关联迹象的所有可能排列的条件概率都算出来并相加,若所得结果小于给定的显著性水平,则判定所考虑的两个属性存在关联,从而拒绝h0。

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

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

    五、相关分析

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

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

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

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

    六、方差分析

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

    1.分类

    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.定义

    依据研究对象(样品或指标)的特征,对其进行分类的方法,减少研究对象的数目。

    各类事物缺乏可靠的历史资料,无法确定共有多少类别,目的是将性质相近事物归入一类。各指标之间具有一定的相关关系。

    变量类型:定类变量、定量(离散和连续)变量

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

    2.性质分类

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

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

    3.方法分类

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

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

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

    九、判别分析

    1.判断分析

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

    2.与聚类分析区别

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

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

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

    3.进行分析

    1)Fisher判别分析法

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

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

    2)BAYES判别分析法

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

    十、主成分分析

    主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。

    主成分分析首先是由K.皮尔森(Karl Pearson)对非随机变量引入的,尔后H.霍特林将此方法推广到随机向量的情形。信息的大小通常用离差平方和或方差来衡量。

    1.原理

    在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性。人们自然希望变量个数较少而得到的信息较多。在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反映此课题的信息有一定的重叠。主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息方面尽可能保持原有的信息。

    设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上用来降维的一种方法。

    2.缺点

    1、在主成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平(即变量降维后的信息量须保持在一个较高水平上),其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释(否则主成分将空有信息量而无实际含义)。

    2、主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义那么清楚、确切,这是变量降维过程中不得不付出的代价。因此,提取的主成分个数m通常应明显小于原始变量个数p(除非p本身较小),否则维数降低的“利”可能抵不过主成分含义不如原始变量清楚的“弊”。

    十一、因子分析

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

    与主成分分析比较:

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

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

    用途:

    1)减少分析变量个数

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

    十二、时间序列分析

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

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

    时间序列是指同一变量按事件发生的先后顺序排列起来的一组观察值或记录值。构成时间序列的要素有两个:

    其一是时间;

    其二是与时间相对应的变量水平。

    实际数据的时间序列能够展示研究对象在一定时期内的发展变化趋势与规律,因而可以从时间序列中找出变量变化的特征、趋势以及发展规律,从而对变量的未来变化进行有效地预测。

    时间序列的变动形态一般分为四种:长期趋势变动,季节变动,循环变动,不规则变动。

    1.时间序列预算法的应用

    系统描述:根据对系统进行观测得到的时间序列数据,用曲线拟合方法对系统进行客观的描述;

    系统分析:当观测值取自两个以上变量时,可用一个时间序列中的变化去说明另一个时间序列中的变化,从而深入了解给定时间序列产生的机理;

    预测未来:一般用ARMA模型拟合时间序列,预测该时间序列未来值;

    决策和控制:根据时间序列模型可调整输入变量使系统发展过程保持在目标值上,即预测到过程要偏离目标时便可进行必要的控制。

    2.特点

    假定事物的过去趋势会延伸到未来;

    预测所依据的数据具有不规则性;

    撇开了市场发展之间的因果关系。

    时间序列分析预测法是根据市场过去的变化趋势预测未来的发展,它的前提是假定事物的过去会同样延续到未来。事物的现实是历史发展的结果,而事物的未来又是现实的延伸,事物的过去和未来是有联系的。市场预测的时间序列分析法,正是根据客观事物发展的这种连续规律性,运用过去的历史数据,通过统计分析,进一步推测市场未来的发展趋势。市场预测中,事物的过去会同样延续到未来,其意思是说,市场未来不会发生突然跳跃式变化,而是渐进变化的。

    时间序列分析预测法的哲学依据,是唯物辩证法中的基本观点,即认为一切事物都是发展变化的,事物的发展变化在时间上具有连续性,市场现象也是这样。市场现象过去和现在的发展变化规律和发展水平,会影响到市场现象未来的发展变化规律和规模水平;市场现象未来的变化规律和水平,是市场现象过去和现在变化规律和发展水平的结果。

    需要指出,由于事物的发展不仅有连续性的特点,而且又是复杂多样的。因此,在应用时间序列分析法进行市场预测时应注意市场现象未来发展变化规律和发展水平,不一定与其历史和现在的发展变化规律完全一致。随着市场现象的发展,它还会出现一些新的特点。因此,在时间序列分析预测中,决不能机械地按市场现象过去和现在的规律向外延伸。必须要研究分析市场现象变化的新特点,新表现,并且将这些新特点和新表现充分考虑在预测值内。这样才能对市场现象做出既延续其历史变化规律,又符合其现实表现的可靠的预测结果。

    ②时间序列分析预测法突出了时间因素在预测中的作用,暂不考虑外界具体因素的影响。时间序列在时间序列分析预测法处于核心位置,没有时间序列,就没有这一方法的存在。虽然,预测对象的发展变化是受很多因素影响的。但是,运用时间序列分析进行量的预测,实际上将所有的影响因素归结到时间这一因素上,只承认所有影响因素的综合作用,并在未来对预测对象仍然起作用,并未去分析探讨预测对象和影响因素之间的因果关系。因此,为了求得能反映市场未来发展变化的精确预测值,在运用时间序列分析法进行预测时,必须将量的分析方法和质的分析方法结合起来,从质的方面充分研究各种因素与市场的关系,在充分分析研究影响市场变化的各种因素的基础上确定预测值。

    需要指出的是,时间序列预测法因突出时间序列暂不考虑外界因素影响,因而存在着预测误差的缺陷,当遇到外界发生较大变化,往往会有较大偏差,时间序列预测法对于中短期预测的效果要比长期预测的效果好。因为客观事物,尤其是经济现象,在一个较长时间内发生外界因素变化的可能性加大,它们对市场经济现象必定要产生重大影响。如果出现这种情况,进行预测时,只考虑时间因素不考虑外界因素对预测对象的影响,其预测结果就会与实际状况严重不符。

    十三、生存分析

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

    1.包含内容

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

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

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

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

    2.方法

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

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

    A 乘积极限法(PL法)

    B 寿命表法(LT法)

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

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

    十四、典型相关分析

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

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

    十五、ROC分析

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

    1.用途

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

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

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

    十六、其他分析方法

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

    决策树分析与随机森林:尽管有剪枝等等方法,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的缺点。(可以理解成三个臭皮匠顶过诸葛亮)

    决策树(Decision

    Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。

    分类树(决策树)是一种十分常用的分类方法。他是一种监管学习,所谓监管学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。这样的机器学习就被称之为监督学习。

    优点:决策树易于理解和实现,人们在在学习过程中不需要使用者了解很多的背景知识,这同时是它的能够直接体现数据的特点,只要通过解释后都有能力去理解决策树所表达的意义。

    对于决策树,数据的准备往往是简单或者是不必要的,而且能够同时处理数据型和常规型属性,在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

    易于通过静态测试来对模型进行评测,可以测定模型可信度;如果给定一个观察的模型,那么根据所产生的决策树很容易推出相应的逻辑表达式。

    缺点:对连续性的字段比较难预测;对有时间顺序的数据,需要很多预处理的工作;当类别太多时,错误可能就会增加的比较快;一般的算法分类的时候,只是根据一个字段来分列。

    展开全文
  • 数据挖掘进行数据分析常用方法

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

    利用数据挖掘进行数据分析常用的方法主要有分类、回归分析、聚类、关联规则、特征、变化和偏差分析、Web页挖掘等, 它们分别从不同的角度对数据进行挖掘。


        ① 分类。分类是找出数据库中一组数据对象的共同特点并按照分类模式将其划分为不同的类,其目的是通过分类模型,将数据库中的数据项映射到某个给定的类别。(分类算法一般有:决策树、bayes分类、神经网络、支持向量机)


        它可以应用到客户的分类、客户的属性和特征分析、客户满意度分析、客户的购买趋势预测等,如一个汽车零售商将客户按照对汽车的喜好划分成不同的类,这样营销人员就可以将新型汽车的广告手册直接邮寄到有这种喜好的客户手中,从而大大增加了商业机会。


        ② 回归分析。回归分析方法反映的是事务数据库中属性值在时间上的特征,产生一个将数据项映射到一个实值预测变量的函数,发现变量或属性间的依赖关系,其主要研究问题包括数据序列的趋势特征、数据序列的预测以及数据间的相关关系等。


        它可以应用到市场营销的各个方面,如客户寻求、保持和预防客户流失活动、产品生命周期分析、销售趋势预测及有针对性的促销活动等。


        ③ 聚类。聚类分析是把一组数据按照相似性和差异性分为几个类别,其目的是使得属于同一类别的数据间的相似性尽可能大,不同类别中的数据间的相似性尽可能小。


        它可以应用到客户群体的分类、客户背景分析、客户购买趋势预测、市场的细分等。


        ④ 关联规则。关联规则是描述数据库中数据项之间所存在的关系的规则,即根据一个事务中某些项的出现可导出另一些项在同一事务中也出现,即隐藏在数据间的关联或相互关系。


        在客户关系管理中,通过对企业的客户数据库里的大量数据进行挖掘,可以从大量的记录中发现有趣的关联关系,找出影响市场营销效果的关键因素,为产品定位、定价与定制客户群,客户寻求、细分与保持,市场营销与推销,营销风险评估和诈骗预测等决策支持提供参考依据。


        ⑤ 特征。特征分析是从数据库中的一组数据中提取出关于这些数据的特征式,这些特征式表达了该数据集的总体特征。如营销人员通过对客户流失因素的特征提取,可以得到导致客户流失的一系列原因和主要特征,利用这些特征可以有效地预防客户的流失。


        ⑥ 变化和偏差分析。偏差包括很大一类潜在有趣的知识,如分类中的反常实例,模式的例外,观察结果对期望的偏差等,其目的是寻找观察结果与参照量之间有意义的差别。在企业危机管理及其预警中,管理者更感兴趣的是那些意外规则。意外规则的挖掘可以应用到各种异常信息的发现、分析、识别、评价和预警等方面。


        ⑦ Web页挖掘。随着Internet的迅速发展及Web 的全球普及, 使得Web上的信息量无比丰富,通过对Web的挖掘,可以利用Web 的海量数据进行分析,收集政治、经济、政策、科技、金融、各种市场、竞争对手、供求信息、客户等有关的信息,集中精力分析和处理那些对企业有重大或潜在重大影响的外部环境信息和内部经营信息,并根据分析结果找出企业管理过程中出现的各种问题和可能引起危机的先兆,对这些信息进行分析和处理,以便识别、分析、评价和管理危机。


        数据挖掘是一种决策支持过程,它通过高度自动化地分析企业的数据,做出归纳性的推理,从中挖掘出潜在的模式,帮助决策者调整市场策略,减少风险,做出正确的决策。这对于一个企业的发展十分重要。


    数据挖掘的一般流程  


    第一步,建立模型,确定数据表中哪些列是要用于输入,哪些是用于预测,选择用何种算法。这时建立的模型内容是空的,在模型没有经过训练之前,计算机是无法知道如何分类数据的。   


    第二步,准备模型数据集,例子中的模型数据集就是1000个会员数据。通常的做法是将模型集分成训练集检验集,比如从1000个会员数据中随机抽取700个作为训练集,剩下 300个作为检验集。 

    第三步,用训练数据集填充模型,这个过程是对模型进行训练,模型训练后就有分类的内容了,像例子图中的树状结构那样,然后模型就可以对新加入的会员事例进行分类了。由于时效性,模型内容要经常更新,比如十年前会员的消费模式与现在有很大的差异,如果用十年前数据训练出来的模型来预测现在的会员是否会购买自行车是不合适的,所以要按时使用新的训练数据集来训练模型。   


    第四步,模型训练后,还无法确定模型的分类方法是否准确。可以用模型对300个会员的检验集进行查询,查询后,模型会预测出哪些会员会购买自行车,将预测的情况与真实的情况对比,评估模型预测是否准确。如果模型准确度能满足要求,就可以用于对新会员进行预测。 


    第五步,超市每天都会有新的会员加入,这些新加入的会员数据叫做预测集得分集。使用模型对预测集进行预测,识别出哪些会员可能会购买自行车,然后向这些会员投递广告。

    展开全文
  • 描述分析(描述性统计分析)就是用来概括、描述数据的整体状况以及数据各特征的统计方法。 描述的内容分为: 集中趋势:平均数,众数、中位数、四分位数 离散程度:方差、标准差、极差、变异系数、四分位差 分布...
  • 作者:吴忠强,Datawhale优秀学习者,东北大学一个复杂的事物,其中往往有许多因素互相制约又互相依存。方差分析是一种常用的数据分析方法,其目的是通过数据分析找出对该事物有显著影响的因...
  • 统计学常用的数据分析方法总结

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

    千次阅读 2017-08-19 16:31:44
    引言偏差方差分析是机器学习中常用的来衡量模型对数据拟合好坏的度量方式,PRML中对这一个问题进行了数学理论上的分析。最好的回归函数对于回归问题的朴素方式是对输入的每一个样本xx,输出对真实回归值tt的一个估计...
  • 常用分析管理工具方法【整理】

    万次阅读 多人点赞 2017-07-14 10:36:30
    常用分析管理工具方法常用分析管理工具方法 二八原则 SWOT分析法 鱼骨图分析法 5M因素分析法 5M1E分析法 头脑风暴法 名义群体法 德尔菲法 电子会议分析法 几种决策方法比较 PDCA循环 5W1H分析法 5W2H分析法 5W2...
  • 统计学常用的数据分析方法大总结

    千次阅读 2020-05-13 09:07:40
    来源:知乎作者:阿平一、描述统计描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描述统计分为集中趋势分析和离中...
  • 数据分析常用6种分析思路

    万次阅读 多人点赞 2019-03-19 14:20:57
    作为数据分析师,你是否常因为缺乏分析思路,而被以下问题影响到幸福感(甚至怀疑人生)? 1. 新上线某个产品,需要监控转化率效果,既要看总体情况,也要看细分渠道; 2. 策划营销活动,预算有限...
  • 作者:阿平@zhihu来源:知乎一、描述统计描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描...
  • 异常值检测的常用方法简述

    万次阅读 2019-06-17 23:12:02
    常用的异常值检测方法如下 1. 简单的描述性统计分析方法 2. 3原则方法 3. 箱型图分析方法 4.Z-score方法 5.DBSCAN方法 6.孤立森林(Isolation Forest)方法 异常值定义 异常值是指样本中的个别值,其数值...
  • 数据分析常用名词解释

    千次阅读 2020-01-09 09:13:32
    数据分析常用的术语解释。 按照以下三类进行汇总。 1、互联网常用名词解释 2、统计学名词解释 3、数据分析名词解释 一、互联网常用名词解释 1、PV(Page View)页面浏览量 指某段时间内访问网站或某一页面的用户的...
  • 作者:阿平@zhihu来源:知乎一、描述统计描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描...
  • 1 描述统计描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描述统计分为集中趋势分析和离中趋势分析和相关分析...
  • 数据分析常用Excel函数

    千次阅读 2018-04-05 10:31:16
    求和的实际单元格通过以下方法确定:使用 sum_range 参数中左上角的单元格作为起始单元格,然后包括与 range 参数大小和形状相对应的单元格。 Sumifs(sum_range,criteria_range1,criteria1, [criteria_range2, ...
  • 数据分析常用的100个指标和术语

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

    万次阅读 2019-02-28 10:19:52
    数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概况总结的过程,是为了寻求问题的答案而实施的有计划、有步骤的行为。 数据分析分类: 描述性统计...
  • 空间数据挖掘常用方法

    万次阅读 2014-12-10 21:55:45
    问题1:空间数据挖掘有哪些常用方法,举例说明一种方法的原理及应用. 答:空间数据挖掘的常用方法有:统计法,聚类方法,关联规则发掘方法,Rough集方法,神经网络方法,云理论,证据理论,模糊集理论,遗传算法...
  • 1、数据分析遵循的原则: ① 数据分析为了验证假设的问题,提供必要的数据验证; ② 数据分析为了挖掘更...利用数据挖掘进行数据分析常用方法主要有分类、回归分析、聚类、关联规则、特征、变化和偏差分析、Web页挖
  • 时间序列常用方法

    千次阅读 2017-07-03 10:56:54
    时间序列分析基本特征: http://wiki.mbalib.com/wiki/%E6%97%B6%E9%97%B4%E5%BA%8F%E5%88%97%E9%A2%84%E6%B5%8B%E6%B3%95 1.时间序列分析法是根据过去的变化趋势预测未来的发展,它的前提是假定事物的过去延续...
  • 向量的相似度计算常用方法

    万次阅读 2018-06-02 16:50:22
    向量的相似度计算常用方法相似度的计算简介 关于相似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近相似度越大。在推荐的场景中,在用户-物品偏好的二维矩阵中,...
  • 常用数据科学方法总结梳理笔记

    千次阅读 2019-05-10 16:27:06
    常用数据科学方法 【未经允许,不得转载】 ...
  • 数据分析方法有哪些?

    千次阅读 2013-11-12 10:06:27
    1、数据分析遵循的原则: ① 数据分析为了验证假设的问题,提供必要的数据验证; ② 数据分析为了挖掘更...利用数据挖掘进行数据分析常用方法主要有分类、回归分析、聚类、关联规则、特征、变化和偏差分析、Web页挖
  • 文章目录回归定义最常用回归方法一、线性回归(Linear Regression)二、逻辑回归(Logistic Regression) 回归定义 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常...
  • 属性或方法 说明 axes 返回行轴标签列表 dtype 返回对象的数据类型(dtype) empty 如果系列为空,则返回True ndim 返回底层数据的维数 size 元素总数 values 将系列作为ndarray返回 ...
  • APP数据分析常用指标

    千次阅读 2016-06-18 13:54:29
    1. 常规数据指标的监测,不在话下。...2. 渠道分析,或者说流量分析。对于一个在上升期得APP来说,你们会花资源去引流量、去别的渠道拉用户。 这时候就需要监测各个渠道的好坏,哪个效果好,哪个单价便宜,这都

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,159
精华内容 11,263
热门标签
关键字:

偏差分析常用方法