欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

(一)pandas开源课程学习笔记——数据载入及初步观察

时间:2023-06-04
目录

1.1 载入数据

1.1.1 任务一:导入numpy和pandas1.1.2 任务二:载入数据1.1.3 任务三:每1000行为一个数据模块,逐块读取1.1.4 任务四:将表头改成中文,索引改为乘客ID 1.2 初步观察

1.2.1 任务一:查看数据的基本信息1.2.2 任务二:观察表格前10行的数据和后15行的数据1.2.4 任务三:判断数据是否为空,为空的地方返回True,其余地方返回False 1.3 保存数据

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

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

1.1.1 任务一:导入numpy和pandas

#写入代码import numpy as npimport pandas as pd

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

1.1.2 任务二:载入数据

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

#写入代码A = pd.read_csv("train.csv")A.head(3)

PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked0103Braund, Mr、Owen Harrismale22.010A/5 211717.2500NaNS1211Cumings, Mrs、John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C2313Heikkinen, Miss、Lainafemale26.000STON/O2、31012827.9250NaNS

#写入代码B = pd.read_csv("C:/Users/hp/Desktop/动手学数据分析/第一单元项目集合/train.csv",engine='python')B.head(3)

PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked0103Braund, Mr、Owen Harrismale22.010A/5 211717.2500NaNS1211Cumings, Mrs、John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C2313Heikkinen, Miss、Lainafemale26.000STON/O2、31012827.9250NaNS

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

import osos.getcwd()

'C:\Users\hp\Desktop\动手学数据分析\第一单元项目集合'

A = pd.read_table("train.csv",sep=",")#pd.read_table()默认"t"分隔A.head(3)

PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked0103Braund, Mr、Owen Harrismale22.010A/5 211717.2500NaNS1211Cumings, Mrs、John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C2313Heikkinen, Miss、Lainafemale26.000STON/O2、31012827.9250NaNS 1.1.3 任务三:每1000行为一个数据模块,逐块读取

#写入代码chunker = pd.read_csv('train.csv', chunksize=1000)

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

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

答:使用pandas来处理文件的时候,经常会遇到大文件,而有时候我们只想要读取其中的一部分数据或对文件进行逐块处理。

#设置chunksize参数,来控制每次迭代数据的大小chunker = pd.read_csv("train.csv",chunksize=400)for piece in chunker: print(type(piece))# print(len(piece)) #第一次循环:400 #第二次循环:400 #第三次循环:91

40040091

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', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)df.head()

是否幸存仓位等级姓名性别年龄兄弟姐妹个数父母子女个数船票信息票价客舱登船港口乘客ID103Braund, Mr、Owen Harrismale22.010A/5 211717.2500NaNS211Cumings, Mrs、John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C313Heikkinen, Miss、Lainafemale26.000STON/O2、31012827.9250NaNS411Futrelle, Mrs、Jacques Heath (Lily May Peel)female35.01011380353.1000C123S503Allen, Mr、William Henrymale35.0003734508.0500NaNS

方法二:使用rename方法(可以修改部分或者全部)

df=pd.read_csv('train.csv')df.rename(columns={'Survived':'是否幸存', 'Pclass':'仓位等级', 'name':'姓名'}, inplace = True)df.head()

PassengerId是否幸存仓位等级NameSexAgeSibSpParchTicketFareCabinEmbarked0103Braund, Mr、Owen Harrismale22.010A/5 211717.2500NaNS1211Cumings, Mrs、John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C2313Heikkinen, Miss、Lainafemale26.000STON/O2、31012827.9250NaNS3411Futrelle, Mrs、Jacques Heath (Lily May Peel)female35.01011380353.1000C123S4503Allen, Mr、William Henrymale35.0003734508.0500NaNS

方法三:使用columns方法(新列名和之前的名字要一一对应)

df = pd.read_csv('train.csv')df.columns=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口']df.set_index('乘客ID', inplace=True)#将乘客ID设置为索引df.head()

是否幸存仓位等级姓名性别年龄兄弟姐妹个数父母子女个数船票信息票价客舱登船港口乘客ID103Braund, Mr、Owen Harrismale22.010A/5 211717.2500NaNS211Cumings, Mrs、John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C313Heikkinen, Miss、Lainafemale26.000STON/O2、31012827.9250NaNS411Futrelle, Mrs、Jacques Heath (Lily May Peel)female35.01011380353.1000C123S503Allen, Mr、William Henrymale35.0003734508.0500NaNS 1.2 初步观察

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

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

df = pd.read_csv('train.csv')df.info()

RangeIndex: 891 entries, 0 to 890Data columns (total 12 columns):PassengerId 891 non-null int64Survived 891 non-null int64Pclass 891 non-null int64Name 891 non-null objectSex 891 non-null objectAge 714 non-null float64SibSp 891 non-null int64Parch 891 non-null int64Ticket 891 non-null objectFare 891 non-null float64Cabin 204 non-null objectEmbarked 889 non-null objectdtypes: float64(2), int64(5), object(5)memory usage: 83.6+ KB

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

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

df.head(10)

是否幸存仓位等级姓名性别年龄兄弟姐妹个数父母子女个数船票信息票价客舱登船港口乘客ID103Braund, Mr、Owen Harrismale22.010A/5 211717.2500NaNS211Cumings, Mrs、John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C313Heikkinen, Miss、Lainafemale26.000STON/O2、31012827.9250NaNS411Futrelle, Mrs、Jacques Heath (Lily May Peel)female35.01011380353.1000C123S503Allen, Mr、William Henrymale35.0003734508.0500NaNS603Moran, Mr、JamesmaleNaN003308778.4583NaNQ701McCarthy, Mr、Timothy Jmale54.0001746351.8625E46S803Palsson, Master、Gosta Leonardmale2.03134990921.0750NaNS913Johnson, Mrs、Oscar W (Elisabeth Vilhelmina Berg)female27.00234774211.1333NaNS1012Nasser, Mrs、Nicholas (Adele Achem)female14.01023773630.0708NaNC

df.tail(15)

是否幸存仓位等级姓名性别年龄兄弟姐妹个数父母子女个数船票信息票价客舱登船港口乘客ID87703Gustafsson, Mr、Alfred Ossianmale20.00075349.8458NaNS87803Petroff, Mr、Nedeliomale19.0003492127.8958NaNS87903Laleff, Mr、KristomaleNaN003492177.8958NaNS88011Potter, Mrs、Thomas Jr (Lily Alexenia Wilson)female56.0011176783.1583C50C88112Shelley, Mrs、William (Imanita Parrish Hall)female25.00123043326.0000NaNS88203Markun, Mr、Johannmale33.0003492577.8958NaNS88303Dahlberg, Miss、Gerda Ulrikafemale22.000755210.5167NaNS88402Banfield, Mr、Frederick Jamesmale28.000C.A./SOTON 3406810.5000NaNS88503Sutehall, Mr、Henry Jrmale25.000SOTON/OQ 3920767.0500NaNS88603Rice, Mrs、William (Margaret Norton)female39.00538265229.1250NaNQ88702Montvila, Rev、Juozasmale27.00021153613.0000NaNS88811Graham, Miss、Margaret Edithfemale19.00011205330.0000B42S88903Johnston, Miss、Catherine Helen "Carrie"femaleNaN12W./C、660723.4500NaNS89011Behr, Mr、Karl Howellmale26.00011136930.0000C148C89103Dooley, Mr、Patrickmale32.0003703767.7500NaNQ 1.2.4 任务三:判断数据是否为空,为空的地方返回True,其余地方返回False

df.isnull().head()

是否幸存仓位等级姓名性别年龄兄弟姐妹个数父母子女个数船票信息票价客舱登船港口乘客ID1FalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalse2FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3FalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalse4FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse5FalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalse

【总结】上面的操作都是数据分析中对于数据本身的观察

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

答:还可以从数据的特征,如平均值、方差、极差等进行观察

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

df.to_csv('train_chinese.csv')

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

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。