zoukankan      html  css  js  c++  java
  • 第一章:第一节数据载入及初步观察

    1 第一章:数据载入及初步观察¶

    1.1载入数据

    数据集下载 https://www.kaggle.com/c/titanic/overview

    1.1.1任务一:导入numpy和pandas

    #写入代码
    import numpy as np
    import pandas as pd
    import os, sys
    

    【提示】如果加载失败,学会如何在你的python环境下安装numpy和pandas这两个库

    1.1.2 任务二:载入数据

    (1) 使用相对路径载入数据
    (2) 使用绝对路径载入数据

    #写入代码
    df1=pd.read_csv("C:/Users/lenovo/test_1.csv")
    print(df1[:5])
    df3=pd.read_table("C:/Users/lenovo/test_1.csv")
    print("---------------")
    print(df3[:5])
    

    在这里插入图片描述

    #写入代码
    df2=pd.read_csv("test_1.csv")
    print(df2[:5])
    print(os.getcwd())
    

    【提示】相对路径载入报错时,尝试使用os.getcwd()查看当前工作目录。
    【思考】知道数据加载的方法后,试试pd.read_csv()和pd.read_table()的不同,如果想让他们效果一样,需要怎么做?了解一下’.tsv’和’.csv’的不同,如何加载这两个数据集?
    【总结】加载的数据是所有工作的第一步,我们的工作会接触到不同的数据格式(eg:.csv;.tsv;.xlsx),但是加载的方法和思路都是一样的,在以后工作和做项目的过程中,遇到之前没有碰到的问题,要多多查资料吗,使用googel,了解业务逻辑,明白输入和输出是什么。

    pd.read_csv()和pd.read_table()的不同
    表面上看貌似要挤一点 且没有格式输出
    后者直接把第一列当作索引 且分隔符不同
    csv数据列用逗号分隔 tsv用制表符

    1.1.3 任务三:每1000行为一个数据模块,逐块读取

    #写入代码
    df=pd.read_csv('test_1.csv',chunksize=100)
    
    for chunk in df:
        print("-----------------------------------------")
        print(chunk)
    print("****************")
    print(chunk)
    

    在这里插入图片描述
    【思考】什么是逐块读取?为什么要逐块读取呢?

    【提示】大家可以chunker(数据块)是什么类型?用for循环打印出来出处具体的样子是什么?
    允许迭代式读取文件 read_csv返回的TextParser对象 可以分块式处理文件 就像 文件分隔符
    pandas.core.frame.DataFrame chunker相当于df中的某一块 具体数据由迭代次数决定 就像某个数据在列表中一样

    1.1.4 任务四:将表头改成中文,索引改为乘客ID [对于某些英文资料,我们可以通过翻译来更直观的熟悉我们的数据]

    PassengerId => 乘客ID
    Survived => 是否幸存
    Pclass => 乘客等级(1/2/3等舱位)
    Name => 乘客姓名
    Sex => 性别
    Age => 年龄
    SibSp => 堂兄弟/妹个数
    Parch => 父母与小孩个数
    Ticket => 船票信息
    Fare => 票价
    Cabin => 客舱
    Embarked => 登船港口

    df = pd.read_csv('train.csv')
    print(df.columns)
    df.columns=['乘客ID', '是否幸存', '乘客等级(1/2/3等舱位)', '乘客姓名', '性别', '年龄', '堂兄弟/姐妹个数',
           '父母与小孩个数', '船票信息', '票价', '客舱', '登船港口']
    print(df.columns)
    

    【思考】所谓将表头改为中文其中一个思路是:将英文列名表头替换成中文。还有其他的方法吗?
    1. 将索引看成字典/列表 直接赋值
    2. 重命名dataframe.rename(columns = {“old1”: “new1”, “old2”:“new2”}, inplace=True) inplace是代替 在原有基础上直接改

    1.2 初步观察

    导入数据后,你可能要对数据的整体结构和样例进行概览,比如说,数据大小、有多少列,各列都是什么格式的,是否包含null等

    df.info()
    

    在这里插入图片描述

    1.2.1 任务一:查看数据的基本信息¶

    print(df.shape)#行列
    print(len(df))#行
    df['乘客ID'].dtype
    df['乘客ID'].isnull()
    

    在这里插入图片描述
    【提示】有多个函数可以这样做,你可以做一下总结
    这还真的没总结 下次来总结一下
    df.index
    df.columns
    df.dtype
    type(df)
    df[‘乘客ID’].isnull()
    df[‘乘客ID’].notnull()
    df.values

    1.2.2 任务二:观察表格前10行的数据和后15行的数据

    print(df.head(10))
    print(df.tail(15))
    

    1.2.3 任务三:判断数据是否为空,为空的地方返回True,其余地方返回False

    df.notnull()
    

    在这里插入图片描述
    总结】上面的操作都是数据分析中对于数据本身的观察

    【思考】对于一个数据,还可以从哪些方面来观察?找找答案,这个将对下面的数据分析有很大的帮助

    整型还是浮点型 默认值 数据本身合理范围以及类型

    1.3保存数据

    任务一:将你加载并做出改变的数据,在工作目录下保存为一个新文件train_chinese.csv

    # 注意:不同的操作系统保存下来可能会有乱码。大家可以加入`encoding='GBK' 或者 ’encoding = ’utf-8‘‘`
    df.to_csv('train_chinese.csv')
    

    【总结】数据的加载以及入门,接下来就要接触数据本身的运算,我们将主要掌握numpy和pandas在工作和项目场景的运用。

  • 相关阅读:
    免费linux远程主机nitrousIO
    利用PyWapFetion发免费天气短信
    接口中的 sort排序 + md5加密
    即点即改心得
    js判断客户端访问是安卓还是ios
    php将时间戳转换成几小时前的格式封装
    前端请求接口出现的跨域问题
    使用redis技术实现注册登录列表以及关注功能
    windows下的redis安装以及扩展安装
    Yii2 学习心得
  • 原文地址:https://www.cnblogs.com/most-silence/p/15495359.html
Copyright © 2011-2022 走看看