datawhalechina / hands-on-data-analysis Goto Github PK
View Code? Open in Web Editor NEW动手学数据分析以项目为主线,知识点孕育其中,通过边学、边做、边引导来得到更好的学习效果
动手学数据分析以项目为主线,知识点孕育其中,通过边学、边做、边引导来得到更好的学习效果
1.df[df['Age']==None]
df[df['Age']==None]=0
df.head(3)
以上代码无法筛选出NaN值
2.df[df['Age'].isnull()]
df[df['Age'].isnull()] = 0 # 还好
df.head(3)
以上代码可以筛选出NaN值,但是df[df['Age'].isnull()] = 0
会将NaN值所在行全部置0,使得结果有误,且后面的重复值相关代码使用的也是这一行代码生成的数据
3.df[df['Age'] == np.nan]
df[df['Age'] == np.nan] = 0
df.head()
以上代码中,np.nan
不可以与任何数进行比较。使用np.isnan()
进行修复
2.3.1任务1中(4)将连续变量Age按10% 30% 50% 70% 90%五个年龄段,并用分类变量12345表示,在参考答案中若设置结尾比例为0.9,则新加入的Age_bin即分类标签列会出现空值。
[0,0.1,0.3,0.5,0.7,0.9]
改为[0,0.1,0.3,0.5,0.7,0.9,1]
,分组改为6组,即labels = range(1,7)
;[0,0.1,0.3,0.5,0.7,1.0]
,分组仍为5组在任务二:对缺失值进行处理 中,参考答案给出的
df[[df['Age']==np.nan]=0,实际上不能将缺失值替换为0。思考以及回答中给出None无法找到缺失值是因为数据类型的原因,所以比较的时候最好用np.nan。但是我去goole之后,得到的结果是由于np.nan是不可比较的,所以即使数据类型相同,甚至是np.nan=np.nan,最后得到的结果也一定是False,所以不应该用”==”的方法来判断空值。可以替换为np.isnan。
安东,
我把之前issue的文本跟序号问题提了一个PR
老徐
任务描述与答案个人认为不够符合,如存活人数的最高的年龄,答案实际为存活人数最多的年龄,存活人数最高的存活率实际为存货人数最高的年龄段的人数/总存活人数
1. 存活人数计算与总人数计算
可以使用 data['Survived'].value_counts()
(data为读取的result.csv文件)
或者使用
data['Survived'].count()
data['Survived'].sum()
2. 找出存活人数的最高的年龄
对存活人数根据年龄做一个从大到小的排序,第一个即为年龄最大的存活人数
data[(data['Survived'].values==1)].sort_values(by='Age',ascending=False)
或者直接给出最大存活人数的年龄
data_survived = data[(data['Survived'].values==1)]
data_survived['Age'].max()
3. 找出不同年龄的存活人数
survived_age = data['Survived'].groupby(data['Age']).sum()
survived_age.head()
4. 找出存活人数最多的年龄
survived_age[survived_age.values==survived_age.max()]
5. 计算各个年龄段的存活率
# 不同年龄段的存活人数
survived_age = data['Survived'].groupby(data['Age']).sum()
survived_age
# 不同年龄段的总人数
age_count = data['Survived'].groupby(data['Age']).count()
age_count
# 各个年龄段的存活率
survived_percent = survived_age / age_count * 1.00
survived_percent.head()
# 总存活率
data['Survived'].sum() / data['Survived'].count()
"#### 1.2.4 任务三..."
这里面1.2.4应该改成1.2.3
【思考】什么是ROC曲线,OCR曲线的存在是为了解决什么问题?
思考题所给的答案与题目描述不符。
【思考】从任务二到任务三中,这些运算可以通过agg()函数来同时计算。并且可以使用rename函数修改列名。你可以按照提示写出这个过程吗?
任务二为:计算泰坦尼克号男性与女性的平均票价。
任务三为:统计泰坦尼克号中男女的存活人数。
给出的答案为:
text.groupby('Sex').agg({'Fare': 'mean', 'Pclass': 'count'}).rename(columns=
{'Fare': 'mean_fare', 'Pclass': 'count_pclass'})
我认为答案应为:
text.groupby('Sex').agg({'Fare':'mean','Survived':'sum'}).rename(columns=
{'Fare': 'fare_mean', 'Survived': 'survived_sum'})
微信二维码图片,看不到,
for循环,numpy.map转换对文本变量进行转换,构造映射时,.nunique()函数里的参数dropna应该是False
for feat in ['Cabin', 'Ticket']:
label_dict = dict(zip(df[feat].unique(), range(df[feat].nunique(dropna=False))))
df[feat + "_labelEncode"] = df[feat].map(label_dict)
不然的话,'Cabin'的C148这里会返回一个NaN值
在hands-on-data-analysis/第一单元项目集合/第一章:第一节数据载入及初步观察.ipynb中,1.1.4 任务四里将SibSp标签的中文写成了“堂兄弟/妹个数”,而在Kaggle数据集的官方解释中,SibSp是Sibling and Spouse的意思,应该是“亲兄弟姐妹、继兄弟姐妹以及配偶”。Kaggle里的截图:
参考:https://www.kaggle.com/competitions/titanic/data
2.4.4 任务四下代码第一行的“resul_up = text_left_up.join(text_right_up)”result少一个t
任务提示1 , jupyter noteboo漏写k。
答案代码:
df[df['Age']==None]=0
df.head(3)
并不能看出前面处理结果
1.1.3 任务三 :每1000行为一个数据模块,逐块读取
数据一共不超过900行,任务设置为每100行为一个数据模块打印出来才能看出区别吧
如任务五:找100,105,108行的数据所用的index为什么不是99, 104, 107,而是100, 105, 108?index是从0开始的吗,所以n行对应的index应该是(n-1)。
”result“ 似乎少了一个t
数据标2.6.x都写成了2.4.x
googel-->google
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.