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

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

时间:2024-03-12 23:22:45浏览次数:28  
标签:数据分析 task1 non null False df datawhale csv 数据

动手学数据分析task1

第一节:数据载入及初步观察

载入数据

  1. 数据集下载

  2. 导入numpy库和pandas库。

    import numpy as np
    import pandas as pd
    
  3. 载入数据。

    • 相对路径载入数据。

      df = pd.read_csv('train.csv')
      
    • 绝对路径载入数据。

      path = os.path.abspath('train.csv')
      df = pd.read_csv(path)
      
    • 相关注意与提示。

      • 相对路径载入报错时,os.getcwd()查看当前工作目录。

      • read_csv得到了正确格式的数据,显示以","分割数据的格式。

      • read_table得到了原始格式数据,显示以制表符"\t"分割数据的格式。

      • read_table(path, sep=',')使用参数sep即可做到效果一致。

      • 加载的数据是所有工作的第一步,我们的工作会接触到不同的数据格式(.csv;.tsv;.xlsx),但是加载的方法和思路都是一样的。

      • read_csv返回的是Dataframe或TextParser。
        Dataframe.to_csv可将Dataframe转成csv文件。

  4. 逐块读取。

    df = pd.read_csv('train.csv', chunksize=1000)
    # method1
    for chunk in df:
       print(chunk)
    # method2
    df.get_chunk()
    

    逐块读取是将数据分成小块,并按块读取和处理。
    逐块读取可以有效地处理大型数据,提高处理速度,减少内存使用,提高应对错误能力。

    chunker(数据块)的类型是TextFileReader。
    for循环得到的数据不够美观。

  5. 将表头翻译成中文,索引为乘客ID。

    # columns方法可以写成字典{'a':'A'}
    df.columns = ['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','客舱','登船港口']
    
    # 增添表头method,用names参数,但原表头会变成数据。  
    df = pd.read_csv('train.csv', names=[...])
    

初步观察

  1. 查看数据基本信息。

    print(df.info())
    
    '''
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 891 entries, 0 to 890
    Data columns (total 12 columns):
    #   Column          Non-Null Count  Dtype  
    ---  ------          --------------  -----  
    0   乘客ID            891 non-null    int64  
    1   是否幸存            891 non-null    int64  
    2   乘客等级(1/2/3等舱位)  891 non-null    int64  
    3   乘客姓名            891 non-null    object 
    4   性别              891 non-null    object 
    5   年龄              714 non-null    float64
    6   堂兄弟/妹个数         891 non-null    int64  
    7   父母与小孩个数         891 non-null    int64  
    8   船票信息            891 non-null    object 
    9   票价              891 non-null    float64
    10  客舱              204 non-null    object 
    11  登船港口            889 non-null    object 
    dtypes: float64(2), int64(5), object(5)
    memory usage: 83.7+ KB
    '''
    
    print(df.describe())
    
    '''
             乘客ID     是否幸存     ...  父母与小孩个数    票价
    count  891.000000  891.000000  ...  891.000000  891.000000
    mean   446.000000    0.383838  ...    0.381594   32.204208
    std    257.353842    0.486592  ...    0.806057   49.693429
    min      1.000000    0.000000  ...    0.000000    0.000000
    25%    223.500000    0.000000  ...    0.000000    7.910400
    50%    446.000000    0.000000  ...    0.000000   14.454200
    75%    668.500000    1.000000  ...    0.000000   31.000000
    max    891.000000    1.000000  ...    6.000000  512.329200
    '''
    
  2. 观察表格前10行的数据和后15行的数据。

    # head()和tail()的参数是显示的数量
    df.head(10)
    df.tail(15)
    
  3. 判断数据是否为空,为空的地方返回True,其余地方返回False。

    df.isnull()
    

保存数据

保存并重命名。

df.to_csv('train_chinese.csv')

第二节 pandas基础

了解数据类型

  1. Series是带标签的一维数组,轴标签统称为索引。

  2. Series使用示例,可以使用index参数,也可以使用字典。

    >>> s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
    >>> s
    '''
    输出:
    a   -0.108730
    b   -0.412877
    c   -0.307803
    d   -0.728362
    e   -0.679069
    dtype: float64
    '''
    
    >>> sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
    >>> example_1 = pd.Series(sdata)
    >>>example_1
    '''
    输出:
    Ohio      35000
    Texas     71000
    Oregon    16000
    Utah       5000
    dtype: int64
    '''
    
  3. DataFrame 是由多种类型的列构成的二维标签数据结构,类似于 Excel 、SQL 表,或 Series 对象构成的字典。

  4. DataFrame使用示例。

    >>> d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']),'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
    >>> df = pd.DataFrame(d)
    >>> d
    '''
    输出:
        one two
    a   1.0 1.0
    b   2.0 2.0
    c   3.0 3.0
    d   NaN 4.0
    '''
    
    >>> data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],'year': [2000, 2001, 2002, 2001, 2002, 2003],'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
    >>> example_2 = pd.DataFrame(data)
    >>> example_2
    '''
    输出:
        state   year    pop
    0   Ohio    2000    1.5
    1   Ohio    2001    1.7
    2   Ohio    2002    3.6
    3   Nevada  2001    2.4
    4   Nevada  2002    2.9
    5   Nevada  2003    3.2
    '''
    
  5. columns方法可以得到表头的list。

  6. 查看某一列的所有项可以直接df.xxx或利用索引df['xxx'],注意得到的是Series类型,如果想返回DataFrame可以使用嵌套df[['xxx']]

  7. 删除列可以使用deldf.pop('xxx')df.drop(['xxx'] ,axis=1 ,inplace=True)(默认inplace参数是False,结果是生成一个副本,而非本身发生变化,只有True才能改变本身)。

筛选的逻辑

  1. 可直接通过索引比较数据大小,或者通过list的索引获得符合条件的数据序号。

    >>> df['Age'] < 10
    '''
    输出:
    0      False
    1      False
    2      False
    3      False
    4      False
        ...  
    886    False
    887    False
    888    False
    889    False
    890    False
    Name: Age, Length: 891, dtype: bool
    '''
    
    >>> df[df['Age'] < 10]
    '''结果繁琐省略'''
    
    # 交集是& 并集是|
    >>> midage = df[(df['Age'] < 50) & (df['Age'] > 10)]
    '''结果繁琐省略'''
    
  2. 如果需要用选择某行的某些数据,可以使用.loc[序号行], [label]方法

    >>> midage.loc[[100], ['Name','Pclass', 'Sex']]
    
    '''
    输出:
        Name                  Pclass Sex
    100 Petranec, Miss. Matilda 3   female
    '''
    

    注意:上面获得的第100行并不是midage中的一百行,而是原数据编号为100的行。

  3. 如果需要获得部分数据新创建的dataframe中的特定行数,需要使用.reset_index()方法,但其原索引会变成一列新的内容,如果需要覆盖原索引,可以增加参数drop=True

  4. 注意一般默认索引开始是0。

  5. iloc[]loc[]最大的不同是iloc方法对于表头的索引是从0开始的序号而非表头名,当有一行空白序号时,iloc仍会读取原索引,而loc优先读取内容中的空白序号。

探索性数据分析

  1. DaraFrame数据按columns(列)排序可以使用.sort_values()方法,其中参数ascending=True是默认升序排列,axis=0是默认按行排序。

  2. 排序index和columns可以使用.sort_index()方法,其中参数ascending=True是默认升序排列,axis=0是排序indx,axis=1是排序columns。

  3. 如果同时对两个数据进行排序时,无法做到,会优先满足第一个数据(作为参数的)。

  4. 利用Pandas进行算术计算,计算两个DataFrame数据相加时,只有行列都相同的部分才会进行算术计算,剩下的会数据NaN。

  5. 一个DataFrame的不同columns计算就是普通计算。

标签:数据分析,task1,non,null,False,df,datawhale,csv,数据
From: https://www.cnblogs.com/LPF05/p/18069613/lpf-datawhale-hands_on_data_analysis

相关文章

  • 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=......
  • 大三入学测试--数据分析练习(题目)
    一、 原始数据: 二、 地域维度标准化:地域属性在科技成果分析中作为一个重要维度,其标准取值非常必要,目前我国采用的标准行政区划代码由两部分组成,一部分为行政区划编码,六位数字组成,前两位表示省编码,中间两位代表市编码,后两位表示所属市的区或县编码。一部分为行政区划名称。两......
  • 热门的数据分析软件推荐
    在数字化时代,数据分析已成为企业决策的关键。为了帮助企业更好地应对市场竞争,提升业务运营效率,本文将为您推荐一款热门的数据分析软件——VeryReport。作为一款功能全面、操作简便、性能卓越的数据分析软件,VeryReport已成为众多企业的首选工具。接下来,我们将从以下几个方面为您详......
  • 破局数据分析滞后难题,赋能企业高速增长的指标管理解决方案
    指标是什么?业务发展过程中,企业内外部都会产生很多的业务数据,对这些数据进行采集、计算、落库、分析后,形成的统计结果称为指标。简单来说,指标是业务被拆解、量化后形成的数量特征,企业利用数据指标对业务进行精准的号脉,实现对业务的科学管理和有效优化。在我们对多家企业展开深入......
  • 超高频数据分析方法
    SPSSAU助力每个写论文的大学生,今天一文总结了毕业论文数据分析常用的12类方法,包括文科生需要的简单数据分析、理科生常用的各类模型、或者医学生常用的实验方法通通都给你分类汇总好了,赶紧转发给你为了数据分析头秃的室友吧~一、基本描述分析基本描述统计分析包括频数分析、描......