数据分析课程基本结束,之前用python做的统计学作业只用截图打了卡,想到留了不少问题待解决,这次回顾就将三次作业合并成了一篇错误汇总,做个记录,以便日后查阅。
第一次用python,很多问题都是初级问题,解决了就好,但也留下很多不影响作业完成度但是影响作业质量的问题,这次回顾填了几个坑,同时又发现了新坑,填坑无止境,Mark一下先。
反复碰到的问题,有必要单独列明以作时刻提醒。
正确输入
定义文件和变量
正确输入怎么这么困难?参考课件照着敲都会敲错,不是漏了字母就是标点格式不对,上下反复核对,重复N次竟然开始怀疑智商,合理谨慎怀疑找茬游戏就是程序员开发出来让非程序员体验其受虐感受的。
定义文件和变量,默默重复三遍。后面长段代码输完,一敲回车,报错的大段文字跳出来,翻到最下面的提示经常就是文件找不到,变量没有定义,看着代码无情的在嘲笑你不懂计算机逻辑。
解决方案想来就只有重复操练,形成肌肉记忆,再系统学习理论加深理解。
具体问题汇总
按照作业分成三部分,最后一部分外加整理了推论统计作业用到的图表供以后查阅。
1直方图--Weight & AirPassengers
2.正态分布--IQ & Stakes Time
3.推论统计--抛硬币假设 & GRE成绩的总体均值和总计标准差 | 推论统计图
1-1.案例Weight
第一次用python,问题最多,N遍才做出上图,问题如下:
Q1. 路径问题
A1: 数据文件要放在notebook同一个路径下面,notebook先保存到本地
Q2. 中英文输入切换
A2: 都是输入错误。 ' ' 这种中英文符号虽然看起来一样,但是需要英文输入法才能认,注意输入法的切换。
现在知道了,看到黑色的就不对了,正确的是红色的。
python的默认代码颜色有不同含义,能帮助认出明显的输入错误。找的资料如下,橙色的还没见过。
注释:红色
关键字:橙色
函数:紫色
字符串:绿色
赋值语句:黑色
Q3. 中文显示不出
作业时尝试了几个方法,都没有解决,就用了英文标题。后来群里专门讨论了这个问题,这次就想把这个坑填上。
翻遍了同学关于中文显示的方案,因为更想从根本上解决,所以参考了李佳同学在windows上的解决方案,结果用到mac上,把字体文件放进matplotlib的字体库,修改matplotlibrc配置文件,最后都以失败告终,不知道是系统问题还是操作有误。
后来在网站上找的一段别人在mac上成功的code,还是没用。
最终放弃从根本解决问题,参考了问题汇总文档,定义myfont,调用系统字库显示出了中文。
但有个红框弹出说找不到Font family,在之前修改配置文件见过,不知道是不是和之前动过配置文件有关,搜了一圈没找到解决方案,以后再研究。Mark#1。
Q4. 直方图间距没有分隔
A4:这个问题群里给了解决方案都解决了rwidth=0.9,但是书里的直方图大多是不分隔的,所以不纠结了,分隔只是为了显示效果。
翻了《深入浅出统计学》直方图相关章节,反而厘清了一个之前没意识到的混淆的概念--直方图不是条形图。
为什么会有这种混淆?python搞不定,自然就想到用熟悉的excel了,其中常用的条形图和直方图长的一样就以为是一样的图。实际上条形图中的x轴和y轴是不同维度的数据,条形图反应的是两者的对应关系,但直方图分析的是一个维度的数据集,用面积表示,通过固定宽度然后显示长度,表示这个数据集里单个数据的频数。完全不一样的含义。
1-2.AirPassengers
根据Weight的案例照着出图,但是图画出来只是第一步,数据为了分析而收集,然后分析数据时就碰到了问题。
这个直方图显示了所有月份乘客的频数高低,没有规律,也不像Weight的正态分布。再看了下数据,49年到60年每个月的乘客数量,因此乘客数量更有可能和时间维度相关,这时想用python尝试画和时间关系的条形图,但是为了正确显示日期格式捯饬半天无果,又留一个坑,作业先用excel做了:整理了月乘客数量和年乘客数量,做成条形图,乘客数量和时间相关,并做了分析。
因为之前股票分析作业碰到过python的时间格式显示问题,因此这次可以解决时间显示问题,但是发现时间格式的代码不是所有情况都适用。
Q5. 时间格式的显示
A5:根据股票分析作业DrFish给的关于时间格式的建议
把这行代码用到AirPassengers数据中
parse_dates=[0]
结果出现了穿越未来的神奇效果:
这个是上世纪的数据,现在默认21世纪,时间就不对了,后来网上找了个方案试了下,把那个[0]改成True解决了。不知以后True是否可以通用。Mark#2。
时间显示搞定,然后就可以用python做条形图了,用bar试了一下,成功出图。又发现x轴显示数据不完全,也是可以自定义的,但是没搞定。Mark#3
这两份数据是excel整理的,看到有同学说用python切片方式可以分类数据分析的,先敬仰一下,以后填坑。Mark#4。
2-1.案例IQ
也是N遍出图,N次错误还是包括输入错误。
出错的图:
正态分布的概率密度函数曲线去哪儿了?还是蓝色的?以为这个巨长的公式打错了,敲两遍核对两遍终于在要抓狂的时候发现这个函数输入是对的,是下面画图输出时候漏了一行plt.plot(x,y)
这行是第二个数据集的函数,因此漏了这个就没有第二个数据的图了。
正确输入后正态分布曲线是蓝色, 直方图变成了桔色,因此发现matplotlib默认的第一个颜色是蓝色的,第二个是桔色的。当然可以自定义想要的颜色。
2-2.Stakes Time
参照IQ案例出的图。
Q6.arange函数不同的数值。
最先做出来的各种形状:
A6: arange函数用于创建等差数组。尝试调整了arange函数括号内三个数值(起始值,终值,步长),最后把步长调整成0.1才有最后的曲线。
对比了IQ的数据,标准差15,步长1,而Stakes Time的标准差很小,只有1.6,因此步长可以调更小,曲线才比较光滑。标准差小也说明选手水平差不多,竞争激烈。
3-1.抛硬币假设
3-2.成绩的总体均值和总计标准差
这次作业像是在解数学题。
3-1参照课件解题,但是假设检验的应用不了解。Mark#5
3-2翻书解题,python只是当做计算器来用了,函数还不会,但仍然谢谢Dr.fish给的建议:
在程序中最好多用变量来代替数值,不仅可以少打字,含义也更加明确,而且当改变初始值时无需改动太大。
看了Dr.fish用自定义的函数完成的,只看懂了说明看不懂代码。Mark#6
统计学用到的python错误汇总,二刷后的问题清单:
Mark#1 不用每次输入代码彻底解决中文显示。
Mark#2 时间数据显示的两个代码区别。
Mark#3 横轴完全显示数据。
Mark#4 部分数据的计算分析统计。
Mark#5 假设检验/统计学。
Mark#6 推论统计中的函数应用。
Mark#7 股票分析中最终图也没能用python画出来,记录在这里以后一起复习。
每次解决一部分,留待三刷。希望这个列表能越来越短。
推论统计整理 | 统计学
python问题汇总完,再整理了下作业用到的推论统计相关知识。
推论统计的作业理解起来有点难, 但是看完《大话统计学》中的三张图,基本解决问题:
统计推论功能地图列出了统计推论的各种条件和解法。
总体均值的区间估计列出了各种已知条件求未知的情况。
总体方差的区间估计列出了常用的使用场景和公式。
没有看到这三张表之前,都没有概念推论统计要解决什么问题,所以题目也没理解。但是第一张图非常清楚的汇总了各种不同方案,用已知求未知,以后碰到不同已知情况都可以照着解决。
有这个思路再看题目就简单了,即根据样本推测总体,已知样本数量n=30,样本均值μ=1082,样本标准差 s=108,求总体均值和总体标准差的95%和99%的置信区间。根据以上的公式把数据代入就能解题了。
统计学刚和概率只是刚入门,还是要专门安排时间通读一遍。
另外深入浅出系列的书个人比较喜欢,统计学和数据分析都是案例讲法,有场景,有问题,有练习,很适合入门,作为数据分析课的补充。
最后关于python学习的个人计划。
python是数据分析的一个重要工具,课程期间一直没有优先学习python,而是把重点放在了数据分析上,因为感觉编程可能要花一段比较长的时间。目前是碰到要用的代码先敲起来,后面再集中学习理论和实践操练,好处是比上来读一本枯燥的理论书更容易持续,不怎么抗拒看代码了。
编程作为一门技能需要大量操练,但依然想从底层的理论获得点全局概念支撑。
比如上面的中文显示问题,对计算机原理和软件运行一无所知,怎么会有把字体复制到软件相应文件夹里这种思路?即使搜索出各种解决方案,目前也没有能力判断哪个方案更靠谱,只能一个一个试,解决问题先,但是长远来看依然需要判断力来提高解决问题的效率。
学点理论能有个起码的计算机思维,能读懂别人的代码。编程少不了排错,没有全局观容易进死胡同,效率低还解决不了问题。
听过一个IT界的故事,某企业宕机,工程师们一直排错无果,老板只好重金$1000请了个技术大牛,专家分析之后在机器的某个地方画了根线就收工了。老板不解,质问专家,$1000就划了根线? 专家答,划线只要$1,但是在哪里划线值$999。 企业宕机损失以秒为单位计,所以如果不知道在哪里划线,那么就花钱解决。反过来说如果刚好你就是那个知道在哪里划线的人,赚钱的机会也比别人多点不是么?
扯得好远。所以个人计划是先看别人推荐的麻省理工学院公开课:《计算机科学及编程导论》。这个课针对没有编程经验的人,理解计算机在解决问题中的作用,正好用python语言教,不过不是专门教python的课程,主要讲计算机思维,如何像计算机科学家一样思考,挺适合我的,先看了两集,要配合练习,一周一集,24周,年底前刷完。
再来《利用Python进行数据分析》,前言就说需要一定编程基础,所以打算之后一边刷基础,一边再来实践这本。之前碰到直方图的问题翻了下想看看有没有解决方案,但是因为不是以解决实际碰到的问题为主,还是搜索更有针对性。这本书没具体操练过,时间不好估计,看到有同学刷完的,有人分享下感受么?
今年计划先这样,赶不上变化是肯定的。因为泰阁志又要开新课了,就酱。