首页 > 其他分享 >datawhale-动手学数据分析task2笔记

datawhale-动手学数据分析task2笔记

时间:2024-03-13 22:44:18浏览次数:29  
标签:数据分析 task2 False df list None datawhale Bool True

动手学数据分析task2

数据清洗及特征处理

缺失值观察与处理

  1. .isnull().isna()可判断表中所有缺失值,缺失值处为True,优先用.isna()

  2. .isna().sum()可以获得columns的缺失值数量。

  3. .info()可以获得dataframe中columns的non-null值,从而推断出缺失值数量。

  4. .dropna()方法可以处理dataframe数据的缺失值,对缺失值行或者列删除。

    '''
    参数说明:
    axis=0/1,0删除行
    how='any'/'all'即筛选方式,any为有Nan即删,all则是全为Nan才会删除
    tresh=None/int,其中为非空元素最低数量,如果行/列元素数量小于tresh的值则会删除
    subset=None/list,其中为筛选的columns或index,作用是筛选判断范围
    inplace=Bool,如果True则替换原dataframe
    ignore_index=Bool, 如果True则会在删除缺失值后重置索引
    '''
    
    #以下为参数的默认值
    df.dropna(axis=0, how='any', tresh=None, subset=None,  inplace=False, ignore_index=False)
    
  5. .fillna()方法可以处理dataframe数据的缺失值,对缺失值进行填充。

    '''
    参数说明:
    value=None/any,其值是填充缺失值的值
    method='bfill'/'ffill'/None即填充方法,ffill表示用前面行/列的值,bfill表示用后面行/列的值,填充当前行/列的空值  
    (目前已不推荐method参数,可以用.ffill()和.bfill()代替,但其无limit参数)
    axis=0/1,沿其填充缺失值的轴
    limit=None/int,是填充连续缺失值的最大数量(与method方法一起用,所以也不推荐)
    inplace=Bool,如果True则替换原dataframe
    '''
    
    # 以下参数为默认参数
    df.fillna(value=None, method=None, axis=None, inplace=False, limit=None)
    
  6. 三种简单方法填充缺失值。

    # method1
    >>> df[df.isna()] = 1
    
    >>> pd.isna(np.nan) # True
    >>> np.nan == np.nan # False
    >>> np.nan is np.nan # True
    # None != NaN
    
  7. 检索空值最好用isna(),理由如上。

重复值观察与处理

  1. .duplicated()方法可以找出表中数据的重复值。

    '''
    subset=None/list,是需要标记重复的标签或标签序列
    keep='first'/'last'/'False',是重复数据的标记方法。  
    first将除第一次出现以外的重复数据标记为True,last将除最后一次出现以外的重复数据标记为True,
    False将所有重复数据标记为True。  
    '''
    
    # 以下参数为默认参数
    df.duplicated(subset=None, keep='first')
    
  2. drop_duplicates()方法可以删除表中数据的重复值。

    '''
    subset=None/list,是需要标记重复的标签或标签序列
    keep='first'/'last'/'False',是重复数据的标记方法,同duplicated()。
    inplace=Bool,是是否替代。
    '''
    
    # 以下参数为默认参数
    df.drop_duplicates(subset=None, keep='first', inplace=False)
    

特征观察与处理

  1. 数据分箱(分桶/离散化)指的是以特定的条件将所有元素分类,实现数据的离散化,增强数据的稳定性。本质上就是把数据进行分组。

  2. 进行数据分箱的三种方法。

    • loc & between

      '''
      将column中所有数据大小在bin(r1, r2)中的数据进行增添新label,需要对每个bin编写分箱代码,所以一般都是bin很少时使用。
      
      between()函数中left为左边界,right为右边界,inclusive为是否包含哪个边界。
      inclusive='left'/'right'/'both',可省略三个关键词。  
      '''
      
      df.loc[df['column'].between(left=r1, right=r2, inclusive='both'), 'new_column'] = 'label'
      
    • cut

      '''
      x=df.['column'],是要分箱的column,必须是一维的。
      right=Bool,是否包含最右边的边缘。
      bins=list/number,list中元素是分箱每个bin的范围或number表示几分位数。
      labels=list,list中是指定返回的bin的标签。必须与上面的 bins 参数长度相同(一一对应)。
      include_lowest=Bool 第一个区间是否应该是左包含的。
      precision=int 精度,表示小数几位。
      duplicates=default/'raise'/'drop',如果bin边缘不是唯一的,'raise'则引发 ValueError而'drop'删除非唯一的。
      retbins=Bool,是否返回bin的边界list。
      ordered=Bool,表示标签是否有序。
      '''
      
      # 以下有具体值的为默认值
      df['new_column'] = pd.cut(x=df['column'], right=True, bins = [range], labels = [label], include_lowest = False, precision=3, duplicates=default, retbins=False, ordered=True)
      
    • qcut

      '''
      x=df['column'],是要分箱的column,必须是一维的。
      q=number/list,number表示几分位数,4表示四分位数等。list是分数list,例如[0, .25, .5, .75, 1.] 四分位数。
      labels=list,list中是指定返回的bin的标签。必须与上面的 bins 参数长度相同(一一对应)。
      retbins=Bool,是否返回bin的边界list。
      precision=int,精度,表示小数几位。
      duplicates=default/'raise'/'drop',如果bin边缘不是唯一的,'raise'则引发 ValueError而'drop'删除非唯一的。
      '''
      
      # 以下有具体值的为默认值
      df['new_column'],cut_bin = pd.qcut(x=df['column'], q=number, labels=[label], retbins=False, precision=3, duplicates=default)
      
  3. 查看columns的数据类型可以使用.dtypes方法或.info(),查看类别文本变量名及分类可以使用.value_counts()方法和.unique()方法(前者可获得统计数量),nunique()方法可获得类别数量。

    >>> df.dtypes
    '''
    输出:
    PassengerId       int64
    Survived          int64df
    Fare            float64
    Cabin            object
    Embarked         object
    Age group      category
    dtype: object
    '''
    
    >>> df['Sex'].value_counts()
    '''
    输出:
    Sex
    male      453
    female    261
    Name: count, dtype: int64
    '''
    
    >>> df['Sex'].unique()
    '''
    输出:
    array(['male', 'female'], dtype=object)
    '''
    
    >>>df['Sex'].nunique()  # 输出: 2
    
  4. 将文本标签替换成数值型标签的三种方法。

    • replace

      '''
      to_replace=None/label/list...,其值是被replace的label或label list...
      value=None/label/list...,其值是replace的label或label list...
      inplace=Bool,如果True则替换原dataframe
      regex=Bool,如果True则开启正则表达式匹配替换
      '''
      
      # 以下有具体值的为默认值
      series.replace(to_replace=None, value=None, inplace=False, regex=False)
      
    • map

      '''
      arg为映射的字典或函数
      na_action=None/'ignore',处理NaN值时,如果是ignore则会传播NaN不对NaN映射
      '''
      
      # 以下有具体值的为默认值
      series.map(func, na_action=None)
      
    • LabelEncoder

      # 引入LabelEncoder
      >>> from sklearn.preprocessing import LabelEncoder
      # 创建encoder
      >>> encoder = LabelEncoder()
      # 向encoder中放入list,将n个类别编码为0~n-1之间的整数(包括0和n-1)
      >>> encoder.fit([a, b, c])
      # 使用encoder (标准化)
      >>> answer = encoder.transform([b, c, a, a])
      >>> answer  # 输出:[1, 2, 0, 0]
      
  5. 文本数据提取用.extract()方法。

    train_data['Title'] = train_data['Name'].str.extract(' ([A-Za-z]+)\.', expand=False)
    
    '''
    pat='str'/'正则表达式'
    flags=int ,是来自re模块的标志
    expand=Bool,True则返回每个捕获组有一列的数据框。False如果有一个捕获组,则返回序列/索引;如果有捕获组,则返回数据框。
    '''
    
    # 以下有具体值的为默认值
    Series.str.extract(pat='', flags=0, expand=True)
    

标签:数据分析,task2,False,df,list,None,datawhale,Bool,True
From: https://www.cnblogs.com/LPF05/p/18071737/lpf-datawhale-hands_on_data_analysis_task2

相关文章

  • 【DataWhale学习】用免费GPU线上跑StableDiffusion项目实践
    用免费GPU线上跑SD项目实践​DataWhale组织了一个线上白嫖GPU跑chatGLM与SD的项目活动,我很感兴趣就参加啦。之前就对chatGLM有所耳闻,是去年清华联合发布的开源大语言模型,可以用来打造个人知识库什么的,一直没有尝试。而SD我前两天刚跟着B站秋叶大佬和Nenly大佬的视频学习过......
  • 课堂测试试卷—数据分析练
         二、 地域维度标准化:地域属性在科技成果分析中作为一个重要维度,其标准取值非常必要,目前我国采用的标准行政区划代码由两部分组成,一部分为行政区划编码,六位数字组成,前两位表示省编码,中间两位代表市编码,后两位表示所属市的区或县编码。一部分为行政区划名称。两部......
  • datawhale-动手学数据分析task1笔记
    动手学数据分析task1第一节:数据载入及初步观察载入数据数据集下载导入numpy库和pandas库。importnumpyasnpimportpandasaspd载入数据。相对路径载入数据。df=pd.read_csv('train.csv')绝对路径载入数据。path=os.path.abspath('train.csv')df......
  • python数据分析 datawhale
    数据分析数据载入及初步观察载入数据导入Numpy和pandasimportnumpyasnpimportpandasaspd使用相对路径和绝对路径载入数据df=pd.read_csv('train.csv')df=pd.read_csv('/Users/chenandong/Documents/datawhale数据分析每个人题目设计/招募阶段/第一单元项目集......
  • 当利用数据分析和改进过头了怎么办?
    当利用数据分析和改进过头时,可能会出现几种情况:过度依赖数据:有时候,团队可能会过度依赖数据,忽视其他重要因素,如用户反馈、创意灵感等。这可能导致创新的缺失和决策的僵化。数据误解:有时候,数据分析可能会被错误地解释或应用。这可能会导致错误的结论和不良的决策。局限性:数据分析......
  • 常用数据分析模型与方法
    一、背景数据分析中,会有一些分析方法来处理不同的问题。简单总结一下。方法汇总:https://share.mindmanager.com/#publish/5v_9k6Z9J3gqPL9sQwAGGKL5DgNrclp4iq_q8C7L    方法链接: 二、RFM分析2.1 定义R(Recency): 客户距离最近的一次采购时间的间隔。F( Freq......
  • API电商接口大数据分析与数据挖掘 (商品详情店铺)
    API接口、数据分析以及数据挖掘在商品详情和店铺相关的应用中,各自扮演着重要的角色。以下是关于它们各自的功能以及如何在商品详情和店铺分析中协同工作的简要说明。API接口API(应用程序接口)是一种允许不同软件应用程序相互通信的方式。在商品详情和店铺分析的上下文中,API接口可......
  • 大数据分析---关键词分类任务
    现在的任务需求是根据关键词(以逗号分割的一列)对类别分类。问题:1.样本数据不够多,并且关键词来源于之前的csv文件的某一列的提取,可能本身就不太准确。2.数据本身有空值等不合理的字段。3.数据准备阶段需要将将中文文本转化为encoding编码解决方案:经过查阅资料可以选择使用朴素......
  • 大三下入学测试---数据分析练习
    分三部分:关键字提取,利用机器学习算法实现文本分类,获取行政区划编码,数据下钻后续再说关键字提取:利用jieba分词实现读取数据库的某一列,并对该列分词。importpymysqlimportpandasaspdfromjieba.analyseimportextract_tags#创建数据库连接db=pymysql.connect(host=......
  • 大三入学测试--数据分析练习(题目)
    一、 原始数据: 二、 地域维度标准化:地域属性在科技成果分析中作为一个重要维度,其标准取值非常必要,目前我国采用的标准行政区划代码由两部分组成,一部分为行政区划编码,六位数字组成,前两位表示省编码,中间两位代表市编码,后两位表示所属市的区或县编码。一部分为行政区划名称。两......