第六课作业
作业1:
计算每个品种鸢尾花各个属性(花萼、花瓣的长度和宽度)的最小值、平均值又是分别是多少? (提示:使用min、mean 方法。)
计算鸢尾花每个品种的花萼长度(sepal_length) 大于6cm的数据个数。
作业2:
分别找出2015, 2016年最流行的前10个男孩和女孩名字, 想给自己起一个流行的英文名字的可以行动起来了。
提示:使用groupby().apply()
思路一,使用ranked这一列, 取其值小于等于10的数据
思路二,使用pct这一列,用sort_values方法对其排列大小,取最大的10行数据
选做作业:餐馆小费数据分析
小费,指给予服务生消费额以外的赏钱,在美国餐馆用餐完后通常会给服务生15-20%的小费。
这个数据是由Bryant和Smith于1995年所著的商务统计上的一个数据
分析什么因素会影响小费比例?
一个优秀的数据分析员一定是一个可以提出有意义问题的人
好的数据分析员往往可以根据商业背景提出一些假说,然后通过数据来验证这些假说。
选做作业可以以文章的形式提交。
答疑Q&A目录:
1,代码运行出错
2,数据导入
3,代码方法
4,数据导入
5,代码理解:max=None
6,参考书
7,代码运行出错:字典
8,代码运行出错
9,数据导入
10,数据导入
11,数据导入:path
12,代码运行出错
13,代码理解:df[ ]
14,代码理解:引号
15,代码理解:圆括号
16,代码理解:层次化索引
17,代码理解:无效句法
18,代码理解:unique
19,方法优化:设备同步代码
第一问开始啦!!
Q 1 :请问:我做这个图(图1),为什么Africa,的红色点没有生成呢,标题里都生成了的.
A :ociean=df.....=='africa'漏改了
Q 2 :婴儿数据导入不了,请问哪里出了问题
A1:我怀疑是目录中含中文,改个path试试
A2: 我重新把文件复制到软件默认目录了,可以导入了
Q 3 :第五课选做作业中,把各大洲的国家数量用value_counts统计出来,生成的是一个series类型的结果,如何把这个series转换成DataFrame进行分析?或者,如何提取这个series类型里的数据呢?比如,我要看哪个洲国家数量最多。
A:看下pandas中series提供方法,有idxmax和max。应该可以满足你的需求,去了解下。
Q 4 :如何正确下载github上的文件?我以前下载文件都必须是点进去然后把内容全选复制到自己的txt文件里,因为每次直接下载的文件都是有问题的,如上图(图2),只有自己打开txt文件自己复制才行。其实我到现在也不知道github到底是怎么把资料完整下载到电脑里的,以前都是一个文件,这一次碰上这么多文件直接懵了,总不能一个一个打开然后再全选复制吧?
A1 : git hub官方有使用方法介绍的教程,可以查一下,可以用代码把资料下到本地并且同步更新,也很快很便捷的。隔壁javascript课的徐老师做的教程供你参考一下。https://github.com/xugy0926/getting-started-with-javascript/wiki/%E7%AC%AC%E4%B8%80%E6%AC%A1%E4%BD%BF%E7%94%A8Git
https://github.com/xugy0926/getting-started-with-javascript/blob/master/topics/%E5%A6%82%E4%BD%95%E4%BB%8E%E4%B8%BB%E9%A1%B9%E7%9B%AE%E6%9B%B4%E6%96%B0fork%E7%9A%84%E9%A1%B9%E7%9B%AE.md
A 2: 刚才按Polo老师的方法,轻松导入了。同学可以先把课件下载到自己的硬盘,在notebook里新建一文件夹,命名为names,点开后点upload按钮,然后就可以选择硬盘文件路径,打开names文件夹全选,文件就全跑到notebook了,再逐一点txt文件的upload就OK了。
Q 5 :我自己实现了一下agg自带的max函数。
有个问题是,之前老师有些max=None,但是这么写报i和max不是一个类型。有点郁闷。
# 手动实现max
def manual_max(arr):
max = 0
for i in arr:
if (i > max):
max = i
return max
#manual_max(iris.sepal_length)
iris.groupby('species').agg({'sepal_length':[manual_max]})
A :对啊,不是一个类型,所以老师有个判断
if max is None:
max = i
类似这样的操作。
Q 6 :前面课中提到的关于数据分析的参考书是哪一本啊?
A :《利用python进行数据分析》
Q 7 :错误:If using all scalar values, you must pass an index。各位高手能看出原因吗?生成不了DataFrame(图3)
A :只有一列参数的不能生成字典,但是可以是series。关于字典合并的问题,可以编写代码实现。
Q 8 :每次重启jupyter,定义过的函数找不到妈,所以有没有什么很好用的句型,直接把函数套上?还是说最简单的方法是找到最初定义的那一句,重复一遍?(图4)
A1 :kernel那一栏有个restart and run all。run all了应该in[ ]每个框里都有数字序号的。
A2 : 因为你第一个错了,后面的就不会执行了。word_count is not defined
A3 :iris.species.value_count( )
Q 9 :请问“名字name ”文件导入有特别的方法吗?是每年逐一导入吗?
A :使用for 循环 一块导入每一年的文件,然后合并,成一个DATA
Q 10 :大数据如何导入到python?(图5)
A1 : 文件是直接导入jupter notbook的,没有放在names文件夹里,所以path=……里面names/去掉
A2 : 要把整个路径都拷贝进去,我遇过跟你一样的问题
Q 11 :数据导入的path在哪儿查?
A:如果是mac看我的截图(图6),jupternotebook的工作路径mac可能是ducument下面,拷贝之后,后面再加上/names那些就可以了(就是文件名)。
Q 12 :请问使用plt.xlim为什么报错'tuple' object is not callable呢?(图8)
使用plt.ylim(0,9) 没报错。
A:不一定是ylim没错,可能只是运行到xlim报了错就停了,类型是数组,确实没错,你看看之前的代码对不对
Q追问 :我在老师的jupyter课件里执行plot.xlim没报错,自己新建了一个jupyter notebook文件执行plot.xlim 就报错了,但plot.ylim就不报错
A:把老师代码里的plt.xlim()复制过来试试,没问题的话,把你的xlim复制过去试试,有问题的话,就是你前面的错误了
Q追问:在我新建的里面执行我自己写的xlim 和老师的xlim代码都有问题,在老师建的jupyter里执行老师的xlim 和我自己写的xlim都没问题。然后我自己还写了一个下图在我自己里的有问题,在老师里的没问题,所以可能是环境的问题而不是代码的问题
A:%
%
那两行你是不是漏打了。
新建一个试试
Q追问 :我重新建了一个后发现竟然不报错了,看来可能是jupyter有点小bug
Q 13 :这个df[ ]是什么意思?(图9)
A1: 取得一个表格,== 是一个判断,values[values.country=='China'] 这个是一个布尔运算。意思就是1. 先得到一个过滤用的筛子;2. 用这个筛子 过滤出 series为 true 的那一行
Q 14 :内置函数要用字符串圈起来 max没用双引号也可以 但是 mean去掉双引号就报错了,为什么?(图10)
A :因为max是python内置、pandas也支持的,mean不是Python内置的,但是pandas实现。agg中,pandas的内置,需用引号,而python内置的不需用引号。
Q 15 :这个返回值,我试了下 ,不带括号也行 ,带上圆括号也行,所以圆括号是种习惯吗?(图11)
A:python的内置和我们自定义的函数,对于pandas的agg函数是一样的。return 习惯都是不带括号吧,这应该是鱼老师的习惯
Q 16 :series可以有两个index吗?(图12)
A:对的,层次化索引
Q 17 :这里一直提示 America那里有一个 无效句法,但是我不知道问题在哪里?(图13)
A :变量名不能有空格哦,可以用North_American代替North American
Q 18 :使用unique统计的时候,这里有空格。是因为这里不是变量名,是dadaframe的一个数值,所以允许?(图14)
A :对的,解释的非常对
Q 19 :我在办公室运行的代码,保存在Notebook里,请问有办法 能把保存的内容同步到 家里的电脑上吗?
A :直接把文件夹拷贝过去就好了。
最后两个小彩蛋:
1,下图(图15)是Polo老师推荐的额外知识:关于python中的变量名和标识符
2,Tiger老师推荐文章:【链接】万能的Python背后:这6大原因让它爆火https://mp.weixin.qq.com/s/qgJt2ygmrhGhsXQwez5fFw
赶上进度!赶上进度!来!睡觉!