Python项目实战 —— 00. 数据分析试题分享

Python项目实战 —— 00. 数据分析试题分享

大家可以关注知乎或微信公众号的share16,我们也会同步更新此文章。

   写在前面的话
   本文内容是在参加了’和鲸社区-数据分析闯关‘活动后,总结的一些答错的试题及相关知识点,以供大家参考。若有侵权,请及时联系!

一、概率论与统计学基础

   涉及内容有二项分布、超几何分布等。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、Python

   涉及内容有完美数、水仙花数、回文素数、斐波那契数列、排队报数、分解质因数(含最大公约数/最小公倍数)、Series.str.函数、Series.dt.函数、分箱(cut/qcut)等。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、数据分析思维

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、泰坦尼克号生存数据特征处理

   Titanic数据集:点此下载

在这里插入图片描述

4.1 合并训练集与测试集

import pandas as pd
train = pd.read_csv('/xxxxxx/train.csv')
test = pd.read_csv('/xxxxxx/test.csv')
df = pd.concat([train,test])
df.head()
''' 此外,还有merge、join两种方法'''

在这里插入图片描述

4.2 缺失值处理

'''
Embarked : 用众数填充;
Fare : 用均值填充;
Cabin : 座位号,用'no-ticket'填充;
'''
df.Embarked = df.Embarked.fillna(df.Embarked.mode()[0])
df.Fare = df.Fare.fillna(df.Fare.mean())
df.Cabin = df.Cabin.fillna('no-ticket')
#df.loc[df.Cabin.isna(),'Cabin'] = 'no-ticket'

4.3 不同特征字段的数据处理

   ①票价分级处理(分箱-分类编码)

X = df[['PassengerId','Survived','Pclass','Embarked','Name','Cabin','Ticket','Sex','Fare','Age']]
dict_name = {"Capt":"Officer", "Col":"Officer", "Major":"Officer", "Jonkheer":"Royalty",\
             "Don":"Royalty", "Sir" :"Royalty", "Dr":"Officer", "Rev":"Officer", "the Countess":"Royalty",\
             "Dona":"Royalty", "Mme":"Mrs", "Mlle":"Miss", "Ms":"Mrs", "Mr" :"Mr", "Mrs" :"Mrs",\
             "Miss" :"Miss", "Master" :"Master", "Lady" :"Royalty"}
X['fare_'] = pd.factorize(pd.qcut(X.Fare,5))[0]

   ②名字处理-提取名字的称呼

X['name_'] = X.Name.str.split(',').str[1].str.split('.').str[0].str.strip().map(dict_name)
#X['name_'] = X.Name.apply(lambda x:x.split(',')[1].split('.')[0].strip()) # apply也可换成map
X['name_length'] = X.Name.agg(len)

   ③Cabin处理

# Cabin:no-ticket用0表示,其他用1表示
X['cabin_'] = X.Cabin.apply(lambda x:0 if x == 'no-ticket' else 1) 

   ④Ticket处理(只保留其中字母,并对字母进行数字转换)

X['ticket_'] = X.Ticket.str.split().str[0]
X['ticket_'] = pd.factorize(X.ticket_.apply(lambda x:'U0' if x.isnumeric() else x))[0]

   ⑤对Embarked、Sex及Pclass等等,用dummy处理

X.drop(columns=['PassengerId','Name','Cabin','Ticket','Fare'],axis=1,inplace=True)
x = pd.get_dummies(X,columns=['Pclass','Embarked','Sex','fare_','cabin_','name_'])

4.4 利用随机森林预测Age缺失值

''' 预测的是Age,所以此处用的是回归 '''
from sklearn.ensemble import RandomForestRegressor
forest = RandomForestRegressor(n_estimators=1000,n_jobs=-1)

x_train = x[x.Age.notnull()]
x_test = x[x.Age.isnull()]

forest.fit(x_train.iloc[:,2:],x_train.iloc[:,1])
x_test.iloc[:,1] = forest.predict(x_test.iloc[:,2:]).round(1)
x_new = pd.concat([x_train,x_test])

4.5 各特征与Survived的相关系数排序

x_new.corr().Survived.abs().sort_values(ascending=False)

谢谢大家 🌹

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值