数据分析入门 | kaggle泰坦尼克任务(一)—>数据加载和初步观察

请添加图片描述

系列索引:数据分析入门 | kaggle泰坦尼克任务

一、数据加载

本次主要以实战的方式了解数据分析的流程和熟悉数据分析python的基本操作,完成kaggle上泰坦尼克的任务,实战数据分析全流程。可以参考的图书《Python for Data Analysis》

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

(1)载入数据

这里主要使用numpypandas

import numpy as np
import pandas as pd

载入数据时可以选择使用相对路径或者绝对路径载入数据

df = pd.read_csv('train.csv')
df.head(3)

这里也可以使用read_table()读取数据,不过read_table是按照\t分割,而read_csv()是按照逗号,这里如果使用了table可以加入参数 sep = ','实现和read_csv一样的效果。

(2)逐块读取

日常数据分析工作中,难免碰到数据量特别大的情况,动不动就2、3千万行,如果直接读进 Python 内存中,且不说内存够不够,读取的时间和后续的处理操作都很费劲

Pandas 的 read_csv 函数提供2个参数:chunksizeiterator ,可实现按行多次读取文件,避免内存不足情况。

使用语法为:

  • iterator : boolean, default False
    返回一个TextFileReader 对象,以便逐块处理文件。
  • chunksize : int, default None
    文件块的大小, See IO Tools docs for more informationon iterator and chunksize.
chunker = pd.read_csv('train.csv',chunksize = 1000)
<pandas.io.parsers.TextFileReader at 0x2087ab29040>

pandas.read_csv 参数 chunksize 通过指定一个分块大小(每次读取多少行)来读取大数据文件,可避免一次性读取内存不足,返回的是一个可迭代对象 TextFileReader

指定 iterator=True 也可以返回一个可迭代对象 TextFileReader 。iterator=Truechunksize 可以同时指定使用。

chunker = pd.read_csv('train.csv', chunksize=100)
for i, chunk in enumerate(chunker):
    print(i,' ',len(chunk))
    
0   100
1   100
2   100
3   100
4   100
5   100
6   100
7   100
8   91

再看一个合并数据的代码:

import pandas as pd
df = [pd.read_csv('./data/data_' + str(i) + '.csv') for i in range(5)] #列表推导式
data = pd.concat(df, axis=0).reset_index(drop=True) # 合并
data.head()
data.tail()

axis = 0 时,pd.concat 实现列对齐合并。

分块读取文件demo例程:

import feather
import pandas as pd

filePath = r'data_csv.csv'

def read_csv_feature(filePath):
    # 读取文件
    f = open(filePath, encoding='utf-8')
    reader = pd.read_csv(f, sep=',', iterator=True)
    loop = True
    chunkSize = 1000000
    chunks = []
    while loop:
        try:
            chunk = reader.get_chunk(chunkSize)
            chunks.append(chunk)
        except StopIteration:
            loop = False
            print('Iteration is END!!!')
    df = pd.concat(chunks, axis=0, ignore_index=True)
    f.close()
    return df 

data = read_csv_feature(filePath)

二、初步观察

导入数据后需要对数据的整体结构和样例进行概览,比如数据大小、格式等等。

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Name         891 non-null    object 
 4   Sex          891 non-null    object 
 5   Age          714 non-null    float64
 6   SibSp        891 non-null    int64  
 7   Parch        891 non-null    int64  
 8   Ticket       891 non-null    object 
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object 
 11  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB

df.head(10) #输出前10行数据
df.tail(15) #输出后15行数据
df.isnall().head() #判断数据是否为空

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

数据分析入门 | kaggle泰坦尼克任务 系列持续更新,欢迎点赞收藏关注

上一篇:数据分析入门 | kaggle泰坦尼克任务
下一篇:数据分析入门 | kaggle泰坦尼克任务(二)—>pandas基础

本人水平有限,文章中不足之处欢迎下方👇评论区批评指正~

如果感觉对你有帮助,点个赞👍 支持一下吧 ~

不定期分享 有趣、有料、有营养内容,欢迎 订阅关注 🤝 我的博客 ,期待在这与你相遇 ~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿知

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值