titanic.loc[titanic["Sex"] == "male", "Sex"] = 0中的.loc
时间: 2023-12-05 21:24:41 浏览: 16
`.loc` 是 Pandas 库中的一种数据访问方式,用于基于标签或布尔索引选择数据。在这个例子中,`titanic.loc[titanic["Sex"] == "male", "Sex"]` 表示选择 `titanic` 数据集中 "Sex" 列中值为 "male" 的行,并将这些行中的 "Sex" 列的值设为 0。这个操作可以用来将 "male" 转换为 0,以便进一步分析男性与女性在 Titanic 号船难中的生还率。
相关问题
import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus']=False %matplotlib inline pdtitanic = pd.read_csv(r"C:\Users\小杜羽\Desktop\titanic.csv") pdtitanic.head() pdtitanic.isnull().sum() mean=titanic['age'].mean() print(mean) pdtitanic['age']=['age'].fillna(mean) pdtitanic.isnull().sum() sns.distplot(titanic["age"]) titanic["embarked"],value_counts() del titanic.['deck'] titanic.head sns.countplot(x="sex",data=titanic) sns.boxplot(x="sex",y="age",data=titanic) sns.countplot(x="class",data=titanic) sns.violinplot(y="age",x="class",data=titanic) def agelevel(age): if age<=16: return'child' elif age>=60: return'old' else: return'middle' titanic['age_level']=titanic['age'].map(agelevel) titanic.head sns.countplot(x='age_level',data=titanic) sns.countplot(x='alive',hue='age_level',data=titanic) plt.legend(loc='best',fontsize='15')
你的代码中有一些错误,我来帮你看看:
1. 在导入数据时,你使用了`pdtitanic`变量,但是后面的代码中却使用了`titanic`变量,需要统一变量名。
2. 在填充年龄缺失值时,使用了字符串而不是变量名,应该改为`pdtitanic['age']=pdtitanic['age'].fillna(mean)`。
3. 在查看`embarked`列的取值时,应该使用`pdtitanic["embarked"].value_counts()`。
4. 在删除`deck`列时,需要在`del`和列名之间加上一个".",即`del titanic['deck']`。
5. 在查看`age_level`列的取值时,需要在`titanic.head`后面加上一个括号,即`titanic.head()`。
6. 在画`countplot`时,需要在`plt.legend`前面加上`sns.`,即`sns.countplot(x='alive',hue='age_level',data=titanic) plt.legend(loc='best',fontsize='15')`。
修改后的代码如下所示:
```python
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False
%matplotlib inline
titanic = pd.read_csv(r"C:\Users\小杜羽\Desktop\titanic.csv")
titanic.head()
titanic.isnull().sum()
mean = titanic['age'].mean()
print(mean)
titanic['age'] = titanic['age'].fillna(mean)
titanic.isnull().sum()
sns.distplot(titanic["age"])
print(titanic["embarked"].value_counts())
del titanic['deck']
sns.countplot(x="sex",data=titanic)
sns.boxplot(x="sex",y="age",data=titanic)
sns.countplot(x="class",data=titanic)
sns.violinplot(y="age",x="class",data=titanic)
def agelevel(age):
if age<=16:
return 'child'
elif age>=60:
return 'old'
else:
return 'middle'
titanic['age_level'] = titanic['age'].map(agelevel)
titanic.head()
sns.countplot(x='age_level',data=titanic)
sns.countplot(x='alive',hue='age_level',data=titanic)
sns.legend(loc='best',fontsize='15')
```
这串代码结果显示Bar不是有效的plot kind,要如何改进。import pandas as pd data = pd.read_excel('titanic.xls') print(data.sex.unique()) data.loc[data['sex']=='male','sex']=0 data.loc[data['sex']=='female','sex']=1 survive_0 = data['survived'][data['sex']==0].value_counts() survive_1 = data['survived'][data['sex']==1].value_counts() data1 =pd.DataFrame({'获救': survive_1,'未获救': survive_0}) data1.plot(kind='Bar',stacked=True) plt.title('不同性别的获救比例')
把 `Bar` 改为 `bar` 即可,这个错误是因为大小写不匹配导致的。修改后的代码如下:
```
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel('titanic.xls')
print(data.sex.unique())
data.loc[data['sex']=='male','sex']=0
data.loc[data['sex']=='female','sex']=1
survive_0 = data['survived'][data['sex']==0].value_counts()
survive_1 = data['survived'][data['sex']==1].value_counts()
data1 = pd.DataFrame({'获救': survive_1,'未获救': survive_0})
data1.plot(kind='bar', stacked=True)
plt.title('不同性别的获救比例')
plt.show()
```
注意最后需要加上 `plt.show()` 才能显示图像。