“动手学数据分析”小组学习的Task01-学习日志


前言

本文章为天池“动手学数据分析”小组学习的Task01-学习日志,旨在了解数据载入及初步观察,进一步探索性的数据分析,以及补充一些pandas基础知识。
学习网址添加链接描述:添加链接描述


一、数据载入及初步了解

1.引入库并载入数据

代码如下:

import pandas as pd
import numpy as np
import os

#1.1 读入文件

#读取需要文件的路径
print(os.getcwd())

#绝对路径
path='D:\python\ITEM\hands-on-data-analysis-master\hands-on-data-analysis-master\Data'
T_train=pd.read_csv(os.path.join(path, 'train.csv'), sep=',')
print(T_train.head(3))

输出结果如下:

  PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
2            3         1       3  ...   7.9250   NaN         S

注:读取文件可分为绝对路径读入和相对路径读入,相对路径一般会容易报错,读取函数的具体参数如下(参考文章:添加链接描述 ):
在这里插入图片描述

2.逐块读取数据

数据过多时,可以分批处理,提高处理速度

分块码如下:

path1='D:/python/ITEM/hands-on-data-analysis-master/hands-on-data-analysis-master/Data/'
chunker = pd.read_csv(path1+'train.csv', chunksize=1000)
T_train_C.to_csv('D:/python/ITEM/hands-on-data-analysis-master/hands-on-data-analysis-master/Data/train_chinese.csv',encoding='utf_8_sig')

3.修改标题和主键并存入新文件

代码如下:

T_train_C= pd.read_csv(os.path.join(path, 'train.csv'), names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄',
                                                     '兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0,encoding='utf_8_sig')
T_train_C.to_csv('D:/python/ITEM/hands-on-data-analysis-master/hands-on-data-analysis-master/Data/train_chinese.csv',encoding='utf_8_sig')

4.初步观察数据

1)查看数据基本信息,代码如下:

T_train.info()

1)结果如下:

<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)

注:info()函数可以了解每个变量相应的非空个数及变量数据类型

2)提取数据前后几行,代码如下:

print(T_train.head(10).append(T_train.tail(15)))

2)结果如下:

   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0              1         0       3  ...   7.2500   NaN         S
1              2         1       1  ...  71.2833   C85         C
2              3         1       3  ...   7.9250   NaN         S
3              4         1       1  ...  53.1000  C123         S
4              5         0       3  ...   8.0500   NaN         S
5              6         0       3  ...   8.4583   NaN         Q
6              7         0       1  ...  51.8625   E46         S
7              8         0       3  ...  21.0750   NaN         S
8              9         1       3  ...  11.1333   NaN         S
9             10         1       2  ...  30.0708   NaN         C
876          877         0       3  ...   9.8458   NaN         S
877          878         0       3  ...   7.8958   NaN         S
878          879         0       3  ...   7.8958   NaN         S
879          880         1       1  ...  83.1583   C50         C
880          881         1       2  ...  26.0000   NaN         S
881          882         0       3  ...   7.8958   NaN         S
882          883         0       3  ...  10.5167   NaN         S
883          884         0       2  ...  10.5000   NaN         S
884          885         0       3  ...   7.0500   NaN         S
885          886         0       3  ...  29.1250   NaN         Q
886          887         0       2  ...  13.0000   NaN         S
887          888         1       1  ...  30.0000   B42         S
888          889         0       3  ...  23.4500   NaN         S
889          890         1       1  ...  30.0000  C148         C
890          891         0       3  ...   7.7500   NaN         Q

3)查看某一列的值,代码如下:

print(T_train['Cabin'].head(3))
print(T_train.Cabin.head(3))

4)俩文件比较删除多于列:

print(T_train.columns)
T_test=pd.read_csv(os.path.join(path,'test_1.csv'),sep=',')
print(T_test.columns)

del T_test['a']
print(T_test.head(3))

4)注意,drop的三种使用方法:

dt = dt.drop(['密度', '含糖率'], axis=1)  # axis=1 表示删除列,['密度', '含糖率'] 要删除的col的列表,可一次删除多列

dt.drop(['密度', '含糖率'], axis=1, inplace=True)  # inplace=True, 直接从内部删除

dt.drop(dt.columns[[0, 4, 8]], axis=1, inplace=True)  # dt.columns[[0, 4, 8]] 直接使用索引查找列

5)判断是否为空,代码如下:

print(T_train.isnull().head(3))

5)结果如下:

  PassengerId  Survived  Pclass   Name  ...  Ticket   Fare  Cabin  Embarked
0        False     False   False  False  ...   False  False   True     False
1        False     False   False  False  ...   False  False  False     False
2        False     False   False  False  ...   False  False   True     False

5)注:返回为如果为None则返回为TURE反之返回为false的一张表格

二、数据筛选和排序

1.不等式筛选

代码如下:

midage=T_train[(T_train['Age']>10)&(T_train['Age']<50)]
print(midage.head(3))

2.数据切片

1)将midage的数据中第100行的“Pclass”和“sex"显示出来,代码如下:

midage1=midage.reset_index(drop=True)  #reset_index()主要用于重置索引,将会将原来的索引index作为新的一列
print(midage1.loc[[100],['Pclass','Sex']])

2)使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来(方法一),代码如下:

midage1=midage.reset_index(drop=True)  #reset_index()主要用于重置索引,将会将原来的索引index作为新的一列
print(midage1.loc[[100],['Pclass','Sex']])

2)用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来(方法二),代码如下:

print(midage1.iloc[[100,105,108],[2,3,4]])

2)注:利用loc、iloc提取指定行、指定列数据
1)二者取整行一致
2)对列切片loc通过列名,iloc通过index

3.升降序

按票价和年龄两列进行综合排序(降序排列),代码如下:

print(T_train.sort_values(by=['Fare', 'Age'], ascending=False).head(3))

三.查看基本统计信息

代码如下

TD01=T_train['Fare'].describe()
TD02=T_train['Pclass'].describe()
TD03=T_train['Sex'].describe()
TD04=T_train['Age'].describe()
TD05=T_train['SibSp'].describe()
TD06=T_train['Parch'].describe()
TD07=T_train['Fare'].describe()
print(TD01)
print(TD02)
print(TD03)
print(TD04)
print(TD05)
print(TD06)
print(TD07)

结果如下:

[3 rows x 12 columns]
10
count    891.000000
mean      32.204208
std       49.693429
min        0.000000
25%        7.910400
50%       14.454200
75%       31.000000
max      512.329200
Name: Fare, dtype: float64
count    891.000000
mean       2.308642
std        0.836071
min        1.000000
25%        2.000000
50%        3.000000
75%        3.000000
max        3.000000
Name: Pclass, dtype: float64
count      891
unique       2
top       male
freq       577
Name: Sex, dtype: object
count    714.000000
mean      29.699118
std       14.526497
min        0.420000
25%       20.125000
50%       28.000000
75%       38.000000
max       80.000000
Name: Age, dtype: float64
count    891.000000
mean       0.523008
std        1.102743
min        0.000000
25%        0.000000
50%        0.000000
75%        1.000000
max        8.000000
Name: SibSp, dtype: float64
count    891.000000
mean       0.381594
std        0.806057
min        0.000000
25%        0.000000
50%        0.000000
75%        0.000000
max        6.000000
Name: Parch, dtype: float64
count    891.000000
mean      32.204208
std       49.693429
min        0.000000
25%        7.910400
50%       14.454200
75%       31.000000
max      512.329200
Name: Fare, dtype: float64

数据分析:
(1)费用(与船舱等级相结合):大多数乘客为三等舱低票价且标准差较大,数据离散型较大
(2)年龄:青壮年居多
(3)乘客大多为独自乘坐,家族乘坐较少

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值