我的代码:
def chickenpox_by_sex():
import numpy as np
import pandas as pd
df = pd.read_csv("NISPUF17.csv")
male_1dose_nopox = df[(df['P_NUMVRC'] >=1) & (df['HAD_CPOX'] == 1) &
(df['SEX'] == 1)]
female_1dose_nopox = df[(df['P_NUMVRC'] >=1) & (df['HAD_CPOX'] == 1) & (df['SEX'] == 2)]
male_1dose_pox = df[(df['P_NUMVRC'] >=1) & (df['HAD_CPOX'] == 2) & (df['SEX'] == 1)]
female_1dose_pox = df[(df['P_NUMVRC'] >=1) & (df['HAD_CPOX'] == 2) & (df['SEX'] == 2)]
ratio_male = male_1dose_nopox.shape[0]/male_1dose_pox.shape[0]
ratio_female = female_1dose_nopox.shape[0]/female_1dose_pox.shape[0]
ratio = [ratio_male, ratio_female]
sex = ['male', 'female']
di = {}
di['male'] = ratio[0]
di['female'] = ratio[1]
print(di)
return di
当我调用该函数时:
我的打印语句输出以下内容:
{'male': 0.009675583380762664, 'female': 0.0077918259335489565}
我的返回语句返回以下内容:
{'female': 0.0077918259335489565, 'male': 0.009675583380762664}
我不知道为什么会这样做,我也不会太在意,但在这种情况下我需要返回声明将男性放在第一位。 我到处搜索但找不到这个问题的答案。 请帮帮我!
Python 中的字典是无序的。您可以使用第 3 方库 Sortedcontainers 中的 SortedDict。或者您可以使用元组列表而不是字典。
这是我的代码,如果有帮助的话 def 鸡痘_按_性别(): # 这里是你的代码 将 pandas 导入为 pd
df = pd.read_csv('NISPUF17.csv') #loading the file into varibale
df = pd.read_csv('NISPUF17.csv', index_col=0)
df = df[["SEX", "HAD_CPOX", "P_NUMVRC"]].dropna() #loading three columns from data set into df varibel
df = df[df["P_NUMVRC"] > 0] # loading those columns from data set where avccination is done atleast once
male_df = df[df["SEX"] == 1] # loading all the observation of males
female_df = df[df["SEX"] == 2] # if ==2 then its female, loading all females from data set
resultant_dict={} #creatinhg an empty dictionary for storing resultant
# loading those females data who have contracted chicken pox (==1 , means contracted) and were vaccinated at least one time.
# if both conditions are satisfied, then it will store the into variable
female_chickenpox = female_df[(female_df["HAD_CPOX"] == 1) & (female_df["P_NUMVRC"] >= 1)]
# if the female is not contracted but she has vaccined once or more than that then it will store imto the non-chicken pox
# variable
female_non_chickenpox = female_df[(female_df["HAD_CPOX"] == 2) & (female_df["P_NUMVRC"] >= 1)]
#doing the same for males
male_chickenpox = male_df[(male_df["HAD_CPOX"] == 1) & (male_df["P_NUMVRC"] >= 1)]
male_non_chickenpox = male_df[(female_df["HAD_CPOX"] == 2) & (male_df["P_NUMVRC"] >= 1)]
#now calculating ratio for those who were vaccinated but still contracted
female_ratio = len(female_df[female_df["HAD_CPOX"] == 1])/len(female_df[female_df["HAD_CPOX"] == 2])
male_ratio = len(male_df[male_df["HAD_CPOX"] == 1])/len(male_df[male_df["HAD_CPOX"] == 2])
#assigining the results of ratios to dictionery
resultant_dict["male"]=male_ratio
resultant_dict["female"]=female_ratio
return resultant_dict
chickenpox_by_sex() #调用函数