Python数据分析和采集.docx
- 文档编号:6315588
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:9
- 大小:177.32KB
Python数据分析和采集.docx
《Python数据分析和采集.docx》由会员分享,可在线阅读,更多相关《Python数据分析和采集.docx(9页珍藏版)》请在冰豆网上搜索。
Python数据分析和采集
Python数据分析和采集
泰坦尼克号生存率预测
一、背景介绍
1912年4月15日,载着1316号乘客和891名船员的豪华巨轮“泰坦尼克号"与冰山相撞而沉没,这场海难被认为是20世纪人间十大灾难之一.1985年,“泰坦尼克号"的沉船遗骸在北大西洋两英里半的海底被发现。
XXXX家洛维特(比尔·帕克斯顿 饰演)亲自潜入海底,在船舱的墙壁上看见了一幅画,洛维持的发现立刻引起了一位老妇人(格劳瑞亚·斯图尔特饰演)的注意。
已经是101岁高龄的露丝称她就是画中的XX。
在潜水舱里,露丝开始叙述当年在船上发生的故事。
年轻的贵族XX露丝(凯特·温丝莱特饰演)与穷画家杰克(莱昂纳多·迪卡普里奥 饰演)不顾世俗的偏见坠入爱河,然而就在1912年4月14日,一个风平浪静的夜晚,泰坦尼克号撞上了冰山,“永不沉没的"泰坦尼克号面临沉船的XX,罗丝和杰克刚萌芽的爱情也将经历生死的考验,最终不得不永世相隔.老态龙钟的罗丝讲完这段哀恸天地的爱情之后,把那串价值XX的项链“海洋之心”沉入海底,让它陪着杰克和这段爱情长眠海底。
解决问题的思路:
先处理训练数据,如处理缺失数据,对乘客分类,XX,发出港口等做LableEncoder(标准化标签,将标签值统一转换成range(标签值个数—1)范围内),然后选择合适的分类模型做训练,再根据训练的模型对测试数据做获救预测,然后提交预测结果获得预测结果。
二、CSV
逗号分隔值(XXma-SeparatedValues,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。
用记事本打开,发现每一行数据中的数值用”,”隔开。
三、数据集的获取
泰坦尼克数据集是kaggle中一个好的可选数据集,数据的文件的下载
。
c:
\iknow\docshare\data\cur_work\"
提供的训练数据主要有以下特征:
∙PassengerId =〉 乘客ID
∙Survived=XX是否生还
∙PcXXs=XX乘客等级(1/2/3等舱位)
∙Name=〉 乘客姓名
∙XX=〉XX
∙Age=〉 年龄
∙SibSp=XX堂兄弟/妹个数
∙Parch =XX父母与小孩个数
∙Ticket=XX船票信息
∙Fare=〉 票价
∙Cabin=XX 客舱
∙Embarked=〉登船港口
根据这些训练数据训练模型,来XX测试数据中的乘客是否获救了,测试数据和训练数据相比就是只少了是否获救’Survived'这一列。
四、数据分析前的准备工作
除了常用的科学计算库Numpy和绘图库matplotlib之外,pandas也给python提供了XX助力
1、安装pandas
2、安装matplotlib
四、导入数据&查看基本信息
#encoding=utf-8XXimXXrtnumpyasnp
imXXrt pandasaspd
imXXrt matplotlib.pyplot aspltXXdata_src='titaXXc.csv'
df=pd。
read_csv(data_src,header=0)# 导入数据
printdf.info()#查看数据集的基本信息,
printdf.describe()# 查看数据的摘要信息XXprintdf.head()#查看前几行数据,方便了解数据具体情况
这里也有一个用于计算标准差的函数std,但在describe中已包括了计算标准差.标准差(Standard Deviation),在统计中最常使用作为c:
\iknow\docshare\data\cur_work\"程度(statistical dispersion)上的c:
\iknow\docshare\data\cur_work\"",它反映组内个体间的离散程度.
简单来说,标准差是一组数据平均值分散程度的一种度量。
一个较大的标准差,代表大部分数值和其平均值之间差异较大;一个较小的标准差,代表这些数值较接近平均值.
例如,两组数的集合 {0,5,9,14} 和 {5,6,8,9} 其平均值都是 7 ,但第二个集合具有较小的标准差。
Mean:
平均数
从数据集的基本信息可以看出,Age\Cabin\Embarked是存在缺失值的,其中Cabin字段缺失值过多。
对于少量缺失值的情况,常用的方法是去除和补齐,数值型的数据是可以根据统计学的方法或者机器学习的方法将其进行补齐的。
对于存在大量缺失值的字段,应衡量此字段的重要程度与修复代价之间的权重.up主是果断的没有再考虑这个字段了
五、数据分析
5。
1、乘客存活率与XX单变量之间的关系
1、存活率
#encoding=utf-8XXimXXrtnumpyasnp
imXXrtpandas aspdXXimXXrtmatplotlib。
pyplot as plt
data_src='titaXXc。
csv'XXdf = pd.read_csv(data_src,header=0)#导入数据
survived_rate=float(df['Survived']。
sum())/df[’Survived']。
count()XXprint’survived_rate:
’,survived_rate
输出结果:
survived_rate:
0.383838383838
2、舱位和存活率之间的关系
再看下 舱位和存活率之间的关系:
#encoding=utf—8
imXXrtnumpyas np
imXXrtpandas as pdXXimXXrtmatplotlib.pyplot asplt
data_src='titaXXc。
csv’
df=pd.read_csv(data_src,header=0)#导入数据
x=[df[(df.PcXXs==1)]['PcXXs'].size,df[(df.PcXXs==2)]['PcXXs’].size,df[(df。
PcXXs==3)][’PcXXs']。
size]XXy=[df[(df。
PcXXs==1) &(df.Survived==1)]['PcXXs'].size,\
df[(df.PcXXs==2)&(df.Survived== 1)][’PcXXs'].size,\XX df[(df.PcXXs ==3)&(df。
Survived==1)]['PcXXs'].size]XXprint’1 PcXXs number:
’XXstr(x[0]) XX' ’ XX '1PcXXssurvive:
'XXstr(y[0])XX'’ XX'1PcXXssurviverat:
’,float(y[0]) /x[0]XXprint '2 PcXXsnumber:
'XXstr(x[1]) XX' 'XX'2 PcXXssurvive:
'XX str(y[1])XX' ' XX ’2PcXXssurvive rat:
',float(y[1])/ x[1]XXprint’3 PcXXs number:
’XXstr(x[2]) XX' 'XX'3 PcXXssurvive:
'XXstr(y[2])XX ’'XX’3PcXXssurviverat:
’,float(y[2])/x[2]
PcXXs_survived_rate= (df.groupby(['PcXXs']).sum()/df.groupby([’PcXXs'])。
count())['Survived’]
PcXXs_survived_rate.plot(kind='bar’)XXplt.title(’PcXXs_survived_rate')XXplt.show()
输出的结果如下:
1PcXXsnumber:
216 1PcXXssurvive:
1361PcXXssurvive rat:
0.62962962963
2 PcXXsnumber:
1842 PcXXssurvive:
87 2 PcXXs surviverat:
0.472826086957
3PcXXsnumber:
491 3PcXXs survive:
119 3 PcXXssurviverat:
0。
242362525458
可以很清楚的看出,舱位与存活率之间的关系。
三等舱的乘客们很惨。
3、存活率和XX之间的关系
#encoding=utf—8XXimXXrtnumpyasnp
imXXrtpandasaspd
imXXrtmatplotlib.pyplotasplt
data_src=’titaXXc。
csv’XXdf= pd.read_csv(data_src,header=0)#导入数据XX#以XX为分组,统计数据集每个特征的数值的累计总和
print df.groupby(['XX’]).sum()XX#以XX为分组,统计数据集每个特征的总的个数XXprintdf.groupby([’XX']).count()
#以XX为分组,统计数据集中的存活率
XX_survived_rate=(df.groupby([’XX’]).sum()/df.groupby(['XX'])。
count())['Survived’]XXprintXX_survived_rate
XX_survived_rate。
plot(kind=’bar')XXplt。
title('XX_survived_rate')XXplt.show()
4、存活率和年龄之间的关系
#encoding=utf—8
imXXrt numpyasnp
imXXrtpandasas pd
imXXrtmatplotlib.pyplotaspltXXdata_src=’titaXXc.csv’
df=pd。
read_csv(data_src,header=0)#导入数据
'''XXprintdf.groupby(['Age']).sum()['Survived']XXprint ”#############"XXprintdf。
groupby(['Age’])。
count()['Survived’]
print"***************”XXprintdf。
groupby([’Age’])。
sum()['Survived']/df。
groupby(['Age']).count()['Survived'];
'''
Age_survived_rate=(df.groupby(['Age’]).sum()/df.groupby(['Age’]).count())['Survived']
Age_survived_rate。
plot()XXplt.title(’Age_survived_rate')XXplt.show()
得出的结果特别难懂。
对于连续型数值变量,可以先做特征离散化,将年龄分布在XX个年龄段中,效果就好多了呢。
这里引出了特征工程中的概念———离散化。
#encoding=utf—8XXimXXrtnumpyasnXXXimXXrtpandasaspd
imXXrtmatplotlib。
pyplotasplt
data_src=’titaXXc。
csv'
df=pd。
read_csv(data_src,header=0)#导入数据XXage_clean_date=df[~np.isnan(df['Age'])]#去除年龄数据中的NaN
print age_clean_dateXXages=np。
arange(0,81,5) #0~80岁,每5岁一段(年龄最大80岁)XXprint ages
age_cut=pd.cut(age_clean_date。
Age,ages)
printage_cutXXage_cut_grouped=age_clean_date。
groupby(age_cut)XXprintage_cut_grouped
age_Survival_Rate=(age_cut_grouped.sum()/age_cut_grouped。
count())[’Survived']#计算每年龄段的幸存率
printage_Survival_RateXXage_Survival_Rate.plot(kind=’bar')XXplt.title('Age_group_survived_rate')XXplt。
show()
5、乘客存活率与复合变量之间的关系
一个数据表象,往往是多个因素影响的结果,其中多个因素的影响力XX不同,因此复合变量的分析也是必不可少的。
单变量中舱位和XX对存活率的影响都很大,到底是哪一个主要决定了乘客能否登上救生船,因此就对舱位和XX整合为复合变量,做了分析。
结果发现三等舱的女性存活率高于一等舱的男性存活率,所以起决定性的还是XX.
#encoding=utf-8XXimXXrtnumpyasnXXXimXXrtpandas as pd
imXXrtmatplotlib.pyplotas plt
data_src=’titaXXc。
csv'XXdf =pd。
read_csv(data_src,header=0)# 导入数据XXPcXXs_XX_survived_rate=(df.groupby(['XX’,'PcXXs']).sum()/df。
groupby([’XX',’PcXXs']).count())['Survived’]XXPcXXs_XX_survived_rate.plot(kind=’bar’)
plt。
title(’PcXXs_XX_survived_rate')
plt。
show()
6、XX消费能力对存活率的影响
结论:
XX泰坦尼克号的总人数大概有2200多,乘客有1300多,样本中的900左右数据量虽然不是全部人员的数据,但是就乘客而言样本数量所占比例已然接近70%,根据我们分析的结果显示舱位等级和XX对存活率有较大的影响,由于数据不完整且有缺失,分析结果并不一定正确,这种结果只是代个较大概率的可能性.
除了样本所提供的因素,其他因素已知或者未知对于存活率的影响也是无法忽视,其中我认为泰坦尼克号上的800多工作人员对存活率的影响是非常大的,工作人员的行为显然可以很大程度引导乘客,目前这方面数据完全空缺,所以不能保证我们的结果是完全正确的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 数据 分析 采集