泰坦尼克号入门竞赛-数据基础操作

Pandas数据基础操作

项目源码地址:https://github.com/datawhalechina/hands-on-data-analysis

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

1.1载入数据

1.1.1库的导入

import pandas as pd
import numpy as np
import os

1.1.2读取数据

# 查看当前工作路径
os.getcwd()
pwd
#读取数据
df = pd.read_csv('train.csv')#相对路径
df = pd.read_csv('E:\\第一单元项目集合\\train.csv')#绝对路径

1.1.3逐块读取

当文件数据过大时,整个读取会造成内存运行速度降低且占据较大内存,或者你只想读取文件的一小部分,采用逐块读取,加快读取速度且减少内存消耗。chunker返回的对象是TextFileReader类型。

#逐块读取
chunker = pd.read_csv('train.csv',chunksize=1000)
#chunker类型为TextFileReader
# 遍历每个数据块
for chunk in chunker:

1.1.4修改表头

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

#法一
df = pd.read_csv('train.csv', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
#法二
df.rename(columns={'PassengerId':"乘客ID",'Survived':"是否幸存",'Pclass':"乘客等级(1/2/3等舱位)",'Name':"乘客姓名",'Sex':"性别"},inplace=True)

1.2初步观察

df.info()#查看索引、数据类型和内存信息
df.dtypes#查看数据类型
df.shape#查看表结构
df.head(10)#查看表格前10
df.tail(15)#查看表格后15行
df.isna().head()#判断数据是否为空,空返回True

1.3保存数据

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

1.4Pandas基本的数据类型

1.4.1Series

# Series的建立
s = pd.Series([1,2,3,'a'])

1.4.2DataFrame

# DataFrame的建立
data = {'a':['a',1,-11,'21'],'b':['1',32,'q',0.01]}
df = pd.DataFrame(data)
# 数据载入
df_train = pd.read_csv('train.csv')

1.4.3查看DataFrame每列名称

df_train.columns

1.4.4查看某一列的值

#查看Cabin列的所有值
df_train['Cabin']
# df_train.Cabin

1.4.5列的删除

# 加载文件"test_1.csv",然后对比"train.csv",看看有哪些多出的列,然后将多出的列删除
df_test = pd.read_csv('test_1.csv')
df_test.head(3)
#删除多余的列a
del df_test['a']

删除数据时,del与drop不同:DataFrame.drop方法仅将指定的列或行隐藏,而显示其他数据;若想完全删除指定的数据,需设置inplace=True

# 将['PassengerId','Name','Age','Ticket']这几个列元素隐藏,只观察其他几个列元素
df_tmp = df_train.drop(['PassengerId','Name','Age','Ticket'],axis = 1)
df_tmp.head(3)

1.5筛选

1.5.1单条件筛选

#"Age"为筛选条件,显示年龄在10岁以下的乘客信息。
df_train[df_train['Age']<10].head(3)

1.5.2多条件筛选

#以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage = df_train[(df_train['Age']>10)&(df_train['Age']<50)].reset_index(drop=True)
midage.head(3)

reset_index重置数据帧的索引,并使用默认索引。保证midage对象索引连续。

1.5.3loc与iloc方法

#将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
midage.loc[[100],['Pclass','Sex']]
#用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.loc[[100,105,108],['Pclass','Name','Sex']]
#使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.iloc[[100,105,108],[2,3,4]]

1.6了解数据

#载入之前保存的train_chinese.csv数据,关于泰坦尼克号的任务,我们就使用这个数据
df_train=pd.read_csv('train_chinese.csv')
df_train.head(3)

1.6.1排序

df = pd.DataFrame(data=np.arange(8).reshape((2, 4)),index=[2,1],columns=['d', 'a', 'b', 'c']) #创建一个DataFrame对象 
# np.arange(8).reshape((2, 4)) :生成一个二维数组(2*4),第一列:0,1,2,3 第二列:4,5,6,7

1.让行索引升序排序

df.sort_index()

2.让列索引升序排序

df.sort_index(axis=1)

3.让列索引降序排序

df.sort_index(axis=1,ascending = False)

4.对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列)

df_train.sort_values(['票价','年龄'],ascending=False).head(3)

【思考】排序后,如果我们仅仅关注年龄和票价两列。根据常识我知道发现票价越高的应该客舱越好,所以我们会明显看出,票价前20的乘客中存活的有14人,这是相当高的一个比例,那么我们后面是不是可以进一步分析一下票价和存活之间的关系,年龄和存活之间的关系

1.6.2DataFrame数据相加

两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN。

# 计算出在船上最大的家族有多少人
max(df_train['兄弟姐妹个数'] + df_train['父母子女个数'])

1.6.3查看数据基本统计信息

describe()

# 看看泰坦尼克号数据集中票价、父母子女这列数据的基本统计数据
df_train['票价'].describe()
统计
count样本数据大小
mean样本数据的平均值
std样本数据的标准差
mean样本数据的最小值
25%样本数据25%的时候的值
50%样本数据50%的时候的值
75%样本数据75%的时候的值
max样本数据的最大值
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值