设为首页 加入收藏

TOP

【Datawhale】动手学数据分析(一)
2023-07-25 21:25:59 】 浏览:116
Tags:Datawhale

动手学数据分析

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

载入数据

任务一:导入numpy和pandas

import numpy as np
import pandas as pd

任务二:载入数据

train_data = pd.read_csv("train.csv")
train_data.head(5)
train_data = pd.read_table("train.csv")
train_data.head(5)

这两个读取方式的区别在于read_csv读取的是默认分割符为逗号,而read_csv读取默认分隔符为制表符。

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

chunker = pd.read_csv("train.csv", chunksize = 1000)
print(type(chunker))

【思考】什么是逐块读取?为什么要逐块读取呢?
答:比如后续遍历,像一个数据迭代器一样方便读取

【提示】大家可以chunker(数据块)是什么类型?用for循环打印出来出处具体的样子是什么?
答:<class 'pandas.io.parsers.TextFileReader'>,for遍历每次打印出来1000行

将表头改成中文

train_data = pd.read_csv("train.csv", names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID', header=0)
train_data.head(5)

【思考】所谓将表头改为中文其中一个思路是:将英文列名表头替换成中文。还有其他的方法吗?
答:可以读入后再进行修改

初步观察

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

train_data.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 891 entries, 1 to 891
Data columns (total 11 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   是否幸存    891 non-null    int64  
 1   仓位等级    891 non-null    int64  
 2   姓名      891 non-null    object 
 3   性别      891 non-null    object 
 4   年龄      714 non-null    float64
 5   兄弟姐妹个数  891 non-null    int64  
 6   父母子女个数  891 non-null    int64  
 7   船票信息    891 non-null    object 
 8   票价      891 non-null    float64
 9   客舱      204 non-null    object 
 10  登船港口    889 non-null    object 
dtypes: float64(2), int64(4), object(5)
memory usage: 83.5+ KB

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

  • df.info(): # 打印摘要
  • df.describe(): # 描述性统计信息
  • df.values: # 数据
  • df.to_numpy() # 数据 (推荐)
  • df.shape: # 形状 (行数, 列数)
  • df.columns: # 列标签
  • df.columns.values: # 列标签
  • df.index: # 行标签
  • df.index.values: # 行标签
  • df.head(n): # 前n行
  • df.tail(n): # 尾n行
  • pd.options.display.max_columns=n: # 最多显示n列
  • pd.options.display.max_rows=n: # 最多显示n行
  • df.memory_usage(): # 占用内存(字节B)

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

train_data.head(10)
train_data.tail(15)

任务三:判断数据是否为空,为空的地方返回true,否则返回false

train_data.isnull().head(10)

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

答:从分布方面

保存数据

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

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

知道你的数据叫什么

任务一:pandas中有两个数据类型DateFrame和Series,通过查找简单了解他们。然后自己写一个关于这两个数据类型的小例子

myself = {"name":"FavoriteStar",'age':18,"gender":"男性"}
example = pd.Series(myself)
example
myself2 = {"爱好":["打篮球",'唱歌','躺平'], "程度":[100, 90, 80]}
example2 = pd.Series(myself2)
example2
爱好    [打篮球, 唱歌, 躺平]
程度    [100, 90, 80]
dtype: object

任务二:根据上节课的方法载入"train.csv"文件

train_data = pd.read_csv("train_chinese.csv",encoding='GBK')
# 在保存的时候用了GBK,载入就也要用,否则会乱码

任务三:查看DataFrame数据的每列的名称

train_data.columns
Index(['乘客ID', '是否幸存', '仓位等级', '姓名', '性别', '年龄', '兄弟姐妹个数', '父母子女个数', '船票信息','票价', '客舱', '登船港口'],dtype='object')

任务四:查看"Cabin"这列的所有值

train_data['客舱'].unique()
train_data.客舱.unique()

任务五:加载文件"test_1.csv",然后对比"train.csv",看看有哪些多出的列,然后将多出的列删除

test_data = pd.read_csv("test_1.csv")
test_data_drop = test_data.drop('a',axis = 1)
test_data.head(5)

【思考】还有其他的删除多余的列的方式吗?

del test_data['a']
df.drop(columns='a') 
df.drop(columns=['a'])

任务六: 将['PassengerI

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【验证码逆向专栏】安某客滑块逆向 下一篇matplotlib详细教学

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目