1.1 载入数据
数据集下载 https://www.kaggle.com/c/titanic/overview
import numpy as np
import pandas as pd
tr=pd.read_csv('train.csv')
#使用相对路径载入数据
tr=pd.read_csv('C:\\Users\\22774\\Desktop\\hands-on-data-analysis-master\\第一单元项目集合\\train.csv')
#使用绝对路径载入数据
chunker=pd.read_csv('train.csv',chunksize=1000)
#每1000行为一个数据模块,逐块读取
tr1=pd.read_csv('train.csv',names=['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
#增加中文表头,header=0表示去掉原来的表头
1.2 初步观察
tr1.info()
#查看数据基本信息
tr1.head(10)
tr1.tail(15)
#查看前10行数据和后15行数据
tr1.isnull()#检查是否有空数据
tr1.to_csv('train_chinese.csv')#将带有中文表头的文件保存为新文件
import numpy as np
import pandas as pd
tr=pd.DataFrame(pd.read_csv('train.csv'))
tr.columns#查看数据的列名称
data1=tr.loc[:,"Cabin"]
data2=tr.iloc[:,10]#查看具体某一列数据的两种方法
te=pd.DataFrame(pd.read_csv('test_1.csv'))
del te['a']#对比后删除测试集中多余的一列
te.drop(['a'],axis=1)
tr.drop(['PassengerId','Name','Age','Ticket'],axis=1)
#通过drop隐藏某些列或者某些行的数据,对原文件无影响
tr[10>tr['Age']]#显示年龄在10岁以下的乘客信息
midage=tr[(10<tr['Age'])&(tr['Age']<50)]
#midage=tr.query('10'<Age<'50')显示年龄在10岁以上和50岁以下的乘客信息
midage = midage.reset_index(drop=True)midage.loc[[100],['Pclass','Sex']]midage.loc[[100,105,108],['Pclass','Name','Sex']] midage.iloc[[100,105,108],[2,3,4]]
#显示数据中第100,105,108行的"Pclass","Name"和"Sex"的数据
iloc和loc的异同
iloc和loc都能读取某行、某列或者是指定行且指定列的数据,也都能进行切片操作但loc是通过行、列的名称或者标签来索引,而iloc是通过索引位置来寻找数据,所以loc的使用会更加灵活。
1.3探索性数据分析
import numpy as np
import pandas as pd
tc=pd.read_csv('train_chinese.csv')
tc.sort_values(by=['票价','年龄'], ascending=False)
#按照票价和年龄降序排列
tc['票价'].describe()
观察票价这一列数据的基本统计信息,发现票价三位数的票数量很少,大部分船票的票价应该不会超过40。
tc2=tc.sort_values(by=['年龄','性别'],ascending=True)
tc2.head(20)
船上的小孩经过年龄排序过后可以看到,观察年龄最小的前20名小孩,其中有14人存活了。根据常识,在轮船沉没时会优先照顾妇女和小孩。而且可以看出存活的孩子中二等舱和三等舱占比很大。
tc['年龄'].describe()
通过观察年龄的基本信息,可以看出乘客大部分集中在20-40岁之间,老人和小孩的数量都比较少。
总结
第一章主要介绍了数据的读取,修改,筛选,排序以及针对数据行和列的各种基本操作。其中,主要是通过对数据的筛选和排序,选择出想要观察的数据,研究这部分数据与结果之间的关系。通过对数据的初步观察,对数据产生初步认识,以便进一步的分析。