qpython怎么用matplotlib_Python数据分析答疑7:Matplotlib入门

9.6 第七课作业作业1:

模仿课上的例子,根据公司小数数据画出交易总数最高10个公司条形图。

提示:可以使用sort_values(by= quantity) 来实现。

作业2:使用seaborn包画图

画出花萼宽度和长度的散点图,使用品种划分数据

画出花萼的长度的箱线图,使用品种划分数据

作业3(选做):波士顿房价数据的可视化

from sklearn import datasets

boston_dataset = datasets.load_boston()

著名的机器学习数据集,大家尝试观察数据,提出自己的观点。建议的作业方式依然是以文章链接的方式来做。

答疑Q&A目录:1,代码理解:max函数

2,代码理解:subplot(121)

3,代码理解:inplace=True

4,代码运行

5,代码运行出错:读取文件

6,代码运行出错

7,代码运行出错

8,代码运行:填充图像面积

9,代码运行:图表

10,代码运行:删除图表字符

11,图表理解:离散化

12,代码理解:tick / barh

13,代码运行出错:无效句法

14,代码理解:空格

15,代码运行出错

16,代码理解Q 1 :我自己实现了一下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 2 :在一张图上画了两个图,就是那个aaa_subplot。我的问题是,ax1 /ax2只是在产生的时候得到,但是这两个变量在后面的函数中并没有使用。那么怎么知道是画在第一个地方还是画的第二个?

ax2后面的subplot(122)代表一行两个图的第二个图

Q 3 :第七次课程里面,求销售额最高的10个公司那个例题,老师用的更换名字的代码,最后面的inplace=True的作用是什么啊?我把inplace=True删掉,输出的结果也是一样的。

A :inplace=True相当于把前面修改过的名字传回到原数据中。

Q 4 :第6课选做作业里面,如何表示非星期六或星期天?求解答。

A :tips[(tips[day] != "Sun") & (tips[day] != "Sat")]

图1Q 5 :读取文件的时候出现了上图(图1)错误提示,怎么办?

A :从QQ群里面下载文件,估计你这个文件有问题。

Q 6 :我用自定义函数agg,为什么会报错?对照例子看了好多遍,都没发现问题(参照上面两个图)

二图,错误原因也是因为返回的值非标量,需要使用通用的apply方法,而不是agg。

追问Q:还是没弄懂,我按照老师的方法,只是定义的函数我改成了delta_iris,而不是range_iris。结果就出错了,难道和定义的名字还有关系吗?我彻底疯了,这个问题困惑了4个小时了。过不去了…………

A:和名字没关系,主要是理解apply和agg的区别,多尝试不同的案例试试。

图4Q 7 :按老师的操作,列名变成了数字,图4,这是什么原因?

A:注意,这里columns写错了。

图5Q 8 :作业7.1与7.2还是简单的,主要就是把例题中的名字换一下再运行下。目前有个关于图像的填充问题一直没得到解决:y=sin(x)如图显示(图5),如何填充这个图像下侧的面积?

A:试试如下代码:plt.fill_between(x, y, y2=-1),是不是你想要的效果。

图6Q 9 :问题,超过9张图,能画在一张画布上吗?(图6)

A :可以的,你可以试试,三行三列。

图7Q 10 :想用.show()把sns箱图结果里的字去掉,未果,如上图(图7),求教sns里怎么去掉?

A:可以的,要把plt.show()放在最后一行

图8Q 11 :选做题,1看下房价和犯罪率的关系:其实不大懂数学和读图,猜一下这个图是房价30-50之间的犯罪率最低,房价低于30或是最高50的地区比较容易发生犯罪,所以买房子尽量避开贫民区和土豪的地。。

A:如果你要画房价与犯罪率的箱图,首先需要把房价按区间分组离散化,比如0.1-0.2之间是一组,不然这图感觉就是奇葩的散点图,什么也说明不了

图9Q 12 :问题:图9,标注1,为什么这个tick改的就是y轴呢?也没指明x还是y

标注2,为什么这里的plt.yticks, 只把第二图里的y轴改掉了,格式上没有缩进,程序怎么识别的是要改第二个而没把第一个图的y轴也给隐藏呢?

另外,barh(x, y)里,x是不是x轴,y是不是y轴?貌似由bar变成barh,x和y跟着反过来了。。。但是下面的plt.x/yticks,还是按照barh之后的x/y来的。。

A:label的意思是标签,柱形图的标签只存在与一个位置,另一个是数值啊,所以不用指定。

visible为什么不影响第一张图,你可以理解为有个画笔吧,当调用了add_subplot(121),相当于画笔开始画第二幅图了。

barh和bar的方法定义你可以看下,他们的变量都不是表示x, y,也就是并没有说开头两个参数是代码x、y,只是表示一个是标签一个是数值。

图10Q 13 :这里一直提示 America那里有一个 无效句法,但是我不知道问题在哪里。哪位同学可以帮我看下啊

A:变量名不能有空格,可以用North_American代替North American

图11Q 14 :使用unique统计的时候,这里有空格(图11)。是因为这里不是变量名,是dadaframe的一个数值,所以允许?

A :是的。

图12

图13Q 15 :我遇到一个人均平均消费水平的问题,最后一列的结果总是不对,有人能看出原因吗?(图12)

A :取值运算中 . 与[ ] 不一定等价 。改成图13.

图14

图15

Q 16 :为什么这个结果显示不是0呢?(图14)

A:图15,我这么理解的,是内部计算是保留精读的问题,这里math.pi*360/2pi 不等于180,所以结果不是0。math.asin(np.sin(math.pi))用反函数求了对应的弧度,和正弦值相等,符合弧度无穷小时,正弦曲线呈现y=x的性质。不知道这样够不够说明清楚了。尝试用了degree转换,但没成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值