python分层抽样
任务四:根据Survived字段的取值抽取数据
Survived= 1的记录中随机抽取300条数据,Survived=0的记录中随机抽取100条数据, 最终形成400条记录的数据集。
任务五:筛选票价高于30的数据,最终保留抽取男女各占-半的数据
import pandas as pd
def task_4(data):
"""
:param data:是将数据处理好后的结果,我猜测你的数据应该是泰坦尼克人员幸存,数据类型应该是dataframe形式的
:return:400条Survived数据
"""
# 找到所有的Survived字段
Survived_1 = data.loc[data['Survived'] == 1]
Survived_0 = data.loc[data['Survived'] == 0]
# 随机抽样
Survived_300 = Survived_1.sample(n=300, random_state=1, axis=0)
Survived_100 = Survived_0.sample(n=100, random_state=1, axis=0)
# 将抽样的样本进行拼接
new_Survived = pd.concat([Survived_300, Survived_100])
return new_Survived
def task_5(data):
"""
:param data: 将数据处理好后的结果
:return:
"""
# 选取票价大于30的行
ticket = data.query("Ticket > 30")
# 从中选出男性和女性
ticket_male = data.loc[ticket['sex'] == "male"]
ticket_female = data.loc[ticket['sex'] == "female"]
# 在男性和女性中随机选出一半人数
ticket_male_half = ticket_male.sample(frac=0.5, replace=True, random_state=1)
ticket_female_half = ticket_female.sample(frac=0.5, replace=True, random_state=1)
# 将选出的人数进行拼接
new_ticket = pd.concat([ticket_male_half, ticket_female_half])
return new_ticket
```python
```
定义一个随机抽取的函数
def rand_get(start,end,num):
----然后每次获取一个随机数(start到end间),如果新随机数是之前已获取的,则跳过,直到获取满num个。
任务4:然后获取Survived= 1的记录,调用上面的函数抽取300条,Survived=0的记录抽取100条,合起来返回就行了。
任务5:先查出票价高于30的所有男数据,然后查询票价高于30的所有女数据,然后设置抽取数,抽取数不要大于上2组数据的最小数量,然后调用上面的随机抽取函数,最后将男女的数据合起来