首页 > 其他分享 >动手学数据分析 -- Task01

动手学数据分析 -- Task01

时间:2023-01-15 22:56:53浏览次数:78  
标签:数据分析 -- 写入 df read pd Task01 csv 数据

复习:这门课程得主要目的是通过真实的数据,以实战的方式了解数据分析的流程和熟悉数据分析python的基本操作。知道了课程的目的之后,我们接下来我们要正式的开始数据分析的实战教学,完成kaggle上泰坦尼克的任务,实战数据分析全流程。
这里有两份资料:
教材《Python for Data Analysis》和 baidu.com & google.com(善用搜索引擎)

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

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

1.1.2 任务二:载入数据

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

#写入代码
df = pd.read_csv('train.csv')  # 相对路径

# tsv和csv区别:csv和tsv文件的字段间分别由逗号和Tab键隔开。
# read_csv() 读取出来的文件,字段间用逗号隔开,而read_table() 读取出的文件用Tab隔开
#写入代码
path = os.path.abspath('train.csv')  # 获取文件的绝对路径
path = os.getcwd()  # 获取文件的绝对路径
df = pd.read_csv(path) # 绝对路径

# 使用read_table或者read_csv的sep参数可以让二者的效果一样
pd.read_table(path, sep='\t')
pd.read_table(path, sep=',')

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

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

#写入代码
df = pd.read_csv('train.csv',chunksize=1000)   # 得到的类型是TextFileReader
df = df.get_chunk()                            # 通过get_chunk函数可以转化为DataFrame

# 逐块读取的好处:可减少内存的存储和计算资源

【思考】什么是逐块读取?为什么要逐块读取呢?

【提示】大家可以chunker(数据块)是什么类型?用for循环打印出来出处具体的样子是什么?

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

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

#写入代码
names = [" 乘客ID","是否幸存", "乘客等级(1/2/3等舱位)", "乘客姓名", "性别", 
              "年龄", "堂兄弟/妹个数", "父母与小孩个数", "船票信息", "票价", "客舱", "登船港口"]
# 方法一:
df = pd.read_csv('train.csv', names = names)
# 方法二:
df.columns = names

【思考】所谓将表头改为中文其中一个思路是:将英文列名表头替换成中文。还有其他的方法吗?

1.2 初步观察

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

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

#写入代码
df.shape    # 查看数据规模-数据的维度
df.dtypes   # 查看各变量的数据类型
df.info()   # 查看数据整体信息
df.describe()  # 查看数据描述
df.columns  # 查看列名
df.index    # 查看行名-索引
df['xx'].values  # 查看某一列的值
df['xx'].unique()  # 查看某一列的值(去重)

【提示】有多个函数可以这样做,你可以做一下总结

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

#写入代码
df.head(10)
#写入代码
df.tail(15)

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

#写入代码
df.isnull()

【总结】上面的操作都是数据分析中对于数据本身的观察
【思考】对于一个数据,还可以从哪些方面来观察?找找答案,这个将对下面的数据分析有很大的帮助

1.3 保存数据

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

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

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

标签:数据分析,--,写入,df,read,pd,Task01,csv,数据
From: https://www.cnblogs.com/horolee/p/datatask_01.html

相关文章

  • RMI和JNDI反序列化知识点回顾
    RMI介绍RMI(RemoteMethodInvocation)远程方法调用,就是可以使远程函数调用本地函数一样方便,因此这种设计很容易和RPC(RemoteProcedureCalls)搞混。区别就在于RMI是Ja......
  • Matplotlib 绘制折线图
    Matplotlibmatplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建绘制折线图绘制两小时的温度变化frommatplotlibimportpyplo......
  • 【BFS】LeetCode 417. 太平洋大西洋水流问题
    题目链接417.太平洋大西洋水流问题思路问题可以转换成从四个边界出发,能和内部哪些点连通。因为涉及到两个可达性问题,所以用两个boolean类型矩阵分别记录一个点到太......
  • debian11 bspwm+polybar问题记录(siji字体无法正常显示)
    很懒很菜,就想用开箱即用的原始配置依然遇到了问题。。。plybar中的bitmap字体siji无法正常显示。即便按照github的siji官方脚本安装了siji字体还是不行。幸好polybar......
  • 【设计模式】23种设计模式简述
    创建型模式AbstractFactory(抽象工厂)-对象创建型模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类Builder(生成器)-对象创建型模式:将一个复......
  • simulink使用AWGN报错:When the 'Mode' parameter is set to 'Signal to noise ratio',
    原因:当“模式”参数设置为“信噪比”时,输入和输出必须有离散的采样时间。解决:输入端的信号设置sample time,即采样率;输出端增加0阶保持器,不然matlab无法计算 ......
  • Google's B-tree挺快
    #if0#include"set.h"//github.com/Kronuz/cpp-btreeusingnamespacebtree;#else#include<set>//en.cppreference.com/w/cpp/container/multiset#endif#incl......
  • JavaScript学习笔记
     JavaScript学习笔记概念脚本语言:一行一行的翻译成机器语言,并一行一行的执行;而不是全部编译执行; 作用表单动态校验、网页特效、服务端开发Node.js、桌......
  • C#变量的作用域
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespacelearn_val_location{interna......
  • 利用函数封装冒泡顺序
    利用函数封装冒泡顺序sort函数实现过程functionsort(arr){​for(vari=0;i<arr.length-1;i++){​for(varj=0;j<arr.length-i-1......