大西洋暖流

一切都在不完美中前行


  • 首页

  • 关于

  • 标签

  • 归档

  • 搜索

Python数据分析之泰坦尼克沉船统计

发表于 2018-03-15 | 分类于 编程 | 阅读次数:
字数统计: 304 | 阅读时长 ≈ 1

Ship

(Photo by Anthony Metcalfe on Unsplash)

前段时间看到jmportilla这篇Kaggle Titanic Challenge文章时,我把它实现了出来。

目前处于学习阶段,只能通过大量动手实践,才能提升水平,免不了模仿别人。看着人家做出来的东西感觉很轻松,自己亲自动手做一遍才知道其实不容易。原文中注释都使用英文来写,很多地方不大好理解,本文添加了很多翻译,可能更容易理解一些。亲自动手做一遍,能够体会到Python数据分析的乐趣,也是促使你继续学习下去的动力。

数据准备

需要到Kaggle官网下载泰坦尼克沉船数据。(需翻墙)

环境准备

macOS 10.11.6 + Anaconda Navigator 1.2.1 + Python 2.7.12
主要用到的是Python数据分析那一套包,只要安装Anaconda,那些包就自动全部包括在内。其次是安装Seaborn进行图形输出处理。

执行结果

用Anaconda里面Jupyter Notebook一步步写完整个过程后,将得到的Titanic.ipynb文件使用Jupyter NBViewer进行转换,得到泰坦尼克沉船数据这个链接,观看更加直观。

Python元类的一个疑惑

发表于 2018-03-14 | 分类于 编程 | 阅读次数:
字数统计: 567 | 阅读时长 ≈ 2

Magic place

(Photo by Cosmic Timetraveler on Unsplash)

Python高级语法里面的元类,之前一直没有看懂,今天重新看讲解元类的文章。这篇深刻理解Python中的元类(metaclass)翻译Stack Overflow上面大神e-satis对元类的讲解,讲解得十分清楚,看完后我对元类的理解豁然开朗。

下面是结合代码(基于Python 2.7环境)进行实操。

1
2
3
4
5
6
7
8
9
10
11
12
13
class SayMetaClass(type):
'''
元类作用主要是创建类时动态修改类的属性,这里我们在SayMetaClass里重写__new__函数,当创建这个类的
实例时候,会将"say_XXX"这种形式的属性定义为方法
'''
def __new__(cls, name, bases, attrs):
attrs['say_' + name] = lambda self,value,saying=name: (saying+','+value+'!')
return type.__new__(cls, name, bases, attrs)
class Hello(object):
# 指示使用SayMetaClass来定制类,有了这一句后元类魔法就会生效
__metaclass__ = SayMetaClass
pass

编译后,查看Hello这个类的__dict__属性,可以看到有say_Hello方法,它是一个function,解释器幕后创建完Hello类之后,就生成了say_Hello方法。

1
2
3
4
5
6
7
8
In [74]: Hello.__dict__
Out[74]:
dict_proxy({'__dict__': <attribute '__dict__' of 'Hello' objects>,
'__doc__': None,
'__metaclass__': __main__.SayMetaClass,
'__module__': '__main__',
'__weakref__': <attribute '__weakref__' of 'Hello' objects>,
'say_Hello': <function __main__.<lambda>>})

接下来,我们new一个实例对象hello,然后调用say_Hello方法(注意:一定要是say_Hello,使用say_hello或别的格式都会报错,因为和SayMetaClass里面__new__函数定义的格式不匹配),传入参数’jackson’,成功打印预期结果。

1
2
3
In [64]: hello = Hello()
In [65]: hello.say_Hello('jackson')
Out[65]: 'Hello,jackson!'

既然这样,我使用type元类来新建一个Bye类,创建实例bye,然后执行bye.say_Bye(‘andrew’)方法应该也是可以成功的。查看Bye.__dict__,结果发现Bye类没有这个say_Bye这个方法。

1
2
3
4
5
6
7
8
9
10
11
12
In [76]: Bye = type('Bye',(object,),{'__metaclass__':SayMetaClass})
In [77]: print Bye
<class '__main__.Bye'>
In [78]: Bye.__dict__
Out[78]:
dict_proxy({'__dict__': <attribute '__dict__' of 'Bye' objects>,
'__doc__': None,
'__metaclass__': __main__.SayMetaClass,
'__module__': '__main__',
'__weakref__': <attribute '__weakref__' of 'Bye' objects>})

我们new一个实例对象bye,调用say_Bye方法,提示没有这个属性。

1
2
3
4
5
6
7
8
9
In [79]: bye = Bye()
In [80]: bye.say_Bye('andrew')
Traceback (most recent call last):
File "<ipython-input-80-07a0df2d8098>", line 1, in <module>
bye.say_Bye('andrew')
AttributeError: 'Bye' object has no attribute 'say_Bye'

我没想明白这里面的原因。谁知道答案?请指点一下。

参考资料:

  • 深刻理解Python中的元类(metaclass)

  • What are metaclasses in Python?

  • 使用元类

部署Python Flasky项目到Heroku

发表于 2018-03-09 | 分类于 编程 | 阅读次数:
字数统计: 3,383 | 阅读时长 ≈ 16

Heroku Interface

(题图来自Heroku官网截图,注册Heroku需要翻墙)

学习完《FlaskWeb开发:基于Python的Web应用开发实战》(第一版)后,我参照本书及网络上的方法将Flasky项目第一版成功部署到Heroku,这里是README.md说明纪录。部署上线网址:https://mgflask.herokuapp.com

部署项目上线对我来说并不是一件容易的事,Flaskapp项目代码全部来自于flasky-first-edition,不过结合实际业务测试和功能测试,对很多地方进行了修改,部署分为两个部分,Part1是提取正确的git版本,Part2是push代码到Heroku。

阅读全文 »

Flask学习笔记

发表于 2018-02-27 | 分类于 编程 | 阅读次数:
字数统计: 4,590 | 阅读时长 ≈ 18

Flask Logo

学习一门语言,除了熟悉语法知识之外,还需要懂一个框架,这样才具备生产力。Python生态强大在于它有众多各式各样的第三方包,有时光会Python语法解决不了问题,必须结合第三方框架协同来完成任务。

这里是我学习Flask Web开发过程中整理的笔记,我使用的资料是大名鼎鼎的“狗书”第一版和Flask官网手册。学习方法是照着“狗书”里面的内容依葫芦画瓢一步一步地边写边测。书作者Miguel Grinberg的网站上有最新版的内容,想获取第二版或视频教程可以移步观看。

cover of flask web development

这篇博文纪录学习过程中遇到的重点和难点,前后没有相关性,属于看到哪儿写到哪儿那种,大部分是摘抄,有个人思考的部分是“同步发送邮件?异步发送邮件?” 、“数据库多对多关联关系” 、“部署Python Flasky程序到Heroku”这几节。

如果读者朋友发现哪里有写得不对的地方,欢迎指正。

Flask网址重定向问题

1
2
3
4
5
6
7
8
9
10
11
12
13
from flask import Flask
app = Flask(__name__)
@app.route('/projects/')
def projects():
return 'The project page'
@app.route('/about')
def about():
return 'The about page'
if __name__ == '__main__':
app.run(debug=True)
阅读全文 »

我把梦幻西游游戏帐号卖掉了!

发表于 2018-02-24 | 分类于 扯淡 | 阅读次数:
字数统计: 591 | 阅读时长 ≈ 2

逍遥生

(题图来自梦幻西游官方壁纸)

今天收到网易游戏发来的短信通知,挂在藏宝阁里面的游戏帐号交易成功,卖了1200块,扣除60元手续费,我可以拿到1140块。

前两天还担心这破号没人要,寻思着是不是要把价格调低一点出手(游戏帐号贬值很快,梦幻西游是一款问世了十几年的老游戏),今天早上被土豪直接秒掉(我设置了可还价,我的底价是950元,对方没还价直接买走),瞬间有种“喜大普奔”的感觉。img

这是我3年前买的帐号,玩了半年后放那儿一直没动,本来打算留着珍藏。去年想着,玩游戏的时间越来越少,游戏帐号砸手里只会一直贬值,没意义,还不如把号卖掉。于是11月份把号上架,挂了1000块,有好几个人来询价,但没达到我的心里价位,没卖出去。

阅读全文 »
1…111213…16
大西洋暖流

大西洋暖流

76 日志
7 分类
152 标签
常用链接
  • 廖雪峰
  • 阮一峰
  • 王垠
  • 酷壳
  • Python之禅
  • Python入坑指南
  • Echo李金
  • Flask资源
  • Python面试题
  • HelloGitHub
© 2016 — 2025 大西洋暖流 | Site words total count: 97.1k

粤公网安备 44030602003362号