python大数据入门

2018-12-07 17:35:38 RedPintings 阅读数 2727

Python在大数据行业非常火爆近两年,as a pythonic,所以也得涉足下大数据分析,下面就聊聊它们。

Python数据分析与挖掘技术概述

所谓数据分析,即对已知的数据进行分析,然后提取出一些有价值的信息,比如统计平均数,标准差等信息,数据分析的数据量可能不会太大,而数据挖掘,是指对大量的数据进行分析与挖倔,得到一些未知的,有价值的信息等,比如从网站的用户和用户行为中挖掘出用户的潜在需求信息,从而对网站进行改善等。
数据分析与数据挖掘密不可分,数据挖掘是对数据分析的提升。数据挖掘技术可以帮助我们更好的发现事物之间的规律。所以我们可以利用数据挖掘技术可以帮助我们更好的发现事物之间的规律。比如发掘用户潜在需求,实现信息的个性化推送,发现疾病与病状甚至病与药物之间的规律等。

预先善其事必先利其器

我们首先聊聊数据分析的模块有哪些:

  1. numpy 高效处理数据,提供数组支持,很多模块都依赖它,比如pandas,scipy,matplotlib都依赖他,所以这个模块都是基础。所以必须先安装numpy。
  2. pandas 主要用于进行数据的采集与分析
  3. scipy 主要进行数值计算。同时支持矩阵运算,并提供了很多高等数据处理功能,比如积分,微分方程求样等。
  4. matplotlib 作图模块,结合其他数据分析模块,解决可视化问题
  5. statsmodels 这个模块主要用于统计分析
  6. Gensim 这个模块主要用于文本挖掘
  7. sklearn,keras 前者机器学习,后者深度学习。

下面就说说这些模块的基础使用。

numpy模块安装与使用

安装:
下载地址是:http://www.lfd.uci.edu/~gohlke/pythonlibs/
我这里下载的包是1.11.3版本,地址是:http://www.lfd.uci.edu/~gohlke/pythonlibs/f9r7rmd8/numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl
下载好后,使用pip install "numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl"
安装的numpy版本一定要是带mkl版本的,这样能够更好支持numpy

numpy简单使用

import numpy

x=numpy.array([11,22,33,4,5,6,7,])  #创建一维数组
x2=numpy.array([['asfas','asdfsdf','dfdf',11],['1iojasd','123',989012],["jhyfsdaeku","jhgsda"]])    #创建二维数组,注意是([])

x.sort()   #排序,没有返回值的,修改原处的值,这里等于修改了X
x.max()    # 最大值,对二维数组都管用
x.min()    # 最小值,对二维数组都管用
x1=x[1:3]   # 取区间,和python的列表没有区别

生成随机数

主要使用numpy下的random方法。

#numpy.random.random_integers(最小值,最大值,个数)  获取的是正数
data = numpy.random.random_integers(1,20000,30)   #生成整形随机数
#正态随机数  numpy.random.normal(均值,偏离值,个数)  偏离值决定了每个数之间的差 ,当偏离值大于开始值的时候,那么会产生负数的。
data1 = numpy.random.normal(3.2,29.2,10)    # 生成浮点型且是正负数的随机数

pandas

使用pip install pandas即可

直接上代码:
下面看看pandas输出的结果, 这一行的数字第几列,第一列的数字是行数,定位一个通过第一行,第几列来定位:

print(b)
      0     1     2    3    
0     1     2     3  4.0
1  sdaf  dsaf  18hd  NaN
2  1463  None  None  NaN

常用方法如下:

import pandas
a=pandas.Series([1,2,3,34,])   # 等于一维数组
b=pandas.DataFrame([[1,2,3,4,],["sdaf","dsaf","18hd"],[1463]])   # 二维数组
print(b.head())  # 默认取头部前5行,可以看源码得知
print(b.head(2))  # 直接传入参数,如我写的那样
print(b.tail())   # 默认取尾部前后5行
print(b.tail(1))     # 直接传入参数,如我写的那样

下面看看pandas对数据的统计,下面就说说每一行的信息

# print(b.describe())   # 显示统计数据信息
         3      # 3表示这个二维数组总共多少个元素
count  1.0      # 总数
mean   4.0      # 平均数
std    NaN      # 标准数
min    4.0      # 最小数
25%    4.0      # 分位数
50%    4.0      # 分位数
75%    4.0      # 分位数
max    4.0      # 最大值

转置功能:把行数转换为列数,把列数转换为行数,如下所示:

print(b.T)   # 转置
   0     1     2   
0  1  sdaf  1463
1  2  dsaf  None
2  3  18hd  None
3  4   NaN   NaN

通过pandas导入数据

pandas支持多种输入格式,我这里就简单罗列日常生活最常用的几种,对于更多的输入方式可以查看源码后者官网。

CSV文件

csv文件导入后显示输出的话,是按照csv文件默认的行输出的,有多少列就输出多少列,比如我有五列数据,那么它就在prinit输出结果的时候,就显示五列

csv_data = pandas.read_csv('F:\Learnning\CSDN-python大数据\hexun.csv')
print(csv_data)

excel表格

依赖于xlrd模块,请安装它。
老样子,原滋原味的输出显示excel本来的结果,只不过在每一行的开头加上了一个行数

excel_data = pandas.read_excel('F:\Learnning\CSDN-python大数据\cxla.xls')
print(excel_data)

读取SQL

依赖于PyMySQL,所以需要安装它。pandas把sql作为输入的时候,需要制定两个参数,第一个是sql语句,第二个是sql连接实例。

conn=pymysql.connect(host="127.0.0.1",user="root",passwd="root",db="test")
sql="select * from fortest"
e=pda.read_sql(sql,conn)

读取HTML

依赖于lxml模块,请安装它。
对于HTTPS的网页,依赖于BeautifulSoup4,html5lib模块。
读取HTML只会读取HTML里的表格,也就是只读取<table>标签包裹的内容.

html_data = pandas.read_html('F:\Learnning\CSDN-python大数据\shitman.html')   # 读取本地html文件。
html_from_online = pandas.read_html('https://book.douban.com/')  # 读取互联网的html文件
print(html_data)
print('html_from_online')

显示的是时候是通过python的列表展示,同时添加了行与列的标识

读取txt文件

输出显示的时候同时添加了行与列的标识

text_data = pandas.read_table('F:\Learnning\CSDN-python大数据\dforsay.txt')
print(text_data)

scipy

安装方法是先下载whl格式文件,然后通过pip install “包名” 安装。whl包下载地址是:http://www.lfd.uci.edu/~gohlke/pythonlibs/f9r7rmd8/scipy-0.18.1-cp35-cp35m-win_amd64.whl

matplotlib 数据可视化分析

我们安装这个模块直接使用pip install即可。不需要提前下载whl后通过 pip install安装。

下面请看代码:

from matplotlib import  pylab
import numpy
# 下面2行定义X轴,Y轴
x=[1,2,3,4,8]
y=[1,2,3,4,8]
# plot的方法是这样使用(x轴数据,y轴数据,展现形式)
pylab.plot(x,y)   # 先把x,y轴的信息塞入pylab里面,再调用show方法来画图
pylab.show()    # 这一步开始画图,默认是至线图

画出的图是这样的:
image

下面说说修改图的样式

关于图形类型,有下面几种:

  1. 直线图(默认)
  2. - 直线
  3. -- 虚线
  4. -. -.形式
  5. : 细小虚线

关于颜色,有下面几种:

  1. c-青色
  2. r-红色
  3. m-品红
  4. g-绿色
  5. b-蓝色
  6. y-黄色
  7. k-黑色
  8. w-白色

关于形状,有下面几种:

  1. s 方形
  2. * 星形
  3. p 五角形

我们还可以对图稍作修改,添加一些样式,下面修改圆点图为红色的点,代码如下:

pylab.plot(x,y,'or')   # 添加O表示画散点图,r表示red
pylab.show()

image

我们还可以画虚线图,代码如下所示:

pylab.plot(x,y,'r:')
pylab.show()

还可以给图添加上标题,x,y轴的标签,代码如下所示

pylab.plot(x,y,'pr--')   #p是图形为五角星,r为红色,--表示虚线
pylab.title('for learnning')   # 图形标题
pylab.xlabel('args')   # x轴标签
pylab.ylabel('salary')   # y轴标签
pylab.xlim(2)    # 从y轴的2开始做线
pylab.show()

image

直方图

利用直方图能够很好的显示每一段的数据。下面使用随机数做一个直方图。

data1 = numpy.random.normal(5.0,4.0,10)   # 正态随机数
pylab.hist(data1)
pylab.show()

image
Y轴为出现的次数,X轴为这个数的值(或者是范围)

还可以指定直方图类型通过histtype参数:

图形区别语言无法描述很详细,大家可以自信尝试。

  1. bar :is a traditional bar-type histogram. If multiple data
    are given the bars are aranged side by side.
  2. barstacked :is a bar-type histogram where multiple
    data are stacked on top of each other.
  3. step :generates a lineplot that is by default
    unfilled.
  4. stepfilled :generates a lineplot that is by default
    filled.

举个例子:

sty=numpy.arange(1,30,2)
pylab.hist(data1,histtype='stepfilled')
pylab.show() 

image

子图功能

什么是子图功能呢?子图就是在一个大的画板里面能够显示多张小图,每个一小图为大画板的子图。
我们知道生成一个图是使用plot功能,子图就是subplog。代码操作如下:

#subplot(行,列,当前区域)
pylab.subplot(2,2,1)   # 申明一个大图里面划分成4块(即2*2),子图使用第一个区域(坐标为x=1,y=1)
pylab.subplot(2,2,2)  # 申明一个大图里面划分成4块(即2*2),子图使用第二个区域(坐标为x=2,y=2)
x1=[1,4,6,9]
x2=[3,21,33,43]
pylab.plot(x1,x2)   # 这个plot表示把x,y轴数据塞入前一个子图中。我们可以在每一个子图后使用plot来塞入x,y轴的数据
pylab.subplot(2,1,2)  # 申明一个大图里面划分成2块(即),子图使用第二个区域(坐标为x=1,y=2)
pylab.show()

实践小例子

我们现在可以通过一堆数据来绘图,根据图能够很容易的发现异常。下面我们就通过一个csv文件来实践下,这个csv文件是某个网站的文章阅读数与评论数。
先说说这个csv的文件结构,第一列是序号,第二列是每篇文章的URL,第三列每篇文章的阅读数,第四列是每篇评论数。
我们的需求就是把评论数作为Y轴,阅读数作为X轴,所以我们需要获取第三列和第四列的数据。我们知道获取数据的方法是通过pandas的values方法来获取某一行的值,在对这一行的值做切片处理,获取下标为3(阅读数)和4(评论数)的值,但是,这里只是一行的值,我们需要是这个csv文件下的所有评论数和阅读数,那怎么办?聪明的你会说,我自定义2个列表,我遍历下这个csv文件,把阅读数和评论数分别添加到对应的列表里,这不就行了嘛。呵呵,其实有一个更快捷的方法,那么就是使用T转置方法,这样再通过values方法,就能直接获取这一评论数和阅读数了,此时在交给你matplotlib里的pylab方法来作图,那么就OK了。了解思路后,那么就写吧。

下面看看代码:


csv_data = pandas.read_csv('F:\Learnning\CSDN-python大数据\hexun.csv')
dt = csv_data.T   # 装置下,把阅读数和评论数转为行
readers=dt.values[3]   
comments = dt.values[4]
pylab.xlabel(u'reads')
pylab.ylabel(u'comments')   # 打上标签
pylab.title(u"The Article's reads and comments")
pylab.plot(readers,comments,'ob')
pylab.show()

image

 

2019-06-10 21:32:00 sajdhs 阅读数 4022

Python作为现在很热门的一门编程语言,介于Python的友好,许多的初学者都将其作为首选,为了帮助大家更好的学习Python,我筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内。

python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3.6, 不基于这两个或者更新版本的书,慎重选择。很多库已经不提供python2支持,请尽快从python迁移到python3.7。

 

我尽量只收集通用的书籍,专用的书籍只收集特别优秀者。国产的书很多虽然出名,但是实际写得并不好,为此这里收集得并不多。有英文能力的,尽量阅读英文原版。

入门推荐在线书籍:《 python 3.7极速入门教程》

《Python编程:从入门到实践》 - 2016.pdf 初级

亚马逊 4.5星 345评论 https://github.com/ehmatthes/pcc 1000左右星

Python编程:从入门到实践

本书是一本针对所有层次的Python读者而作的Python入门书。全书分两部分:首部分介绍用Python 编程所必须了解的基本概念,包括matplotlib、NumPy和Pygal等强大的Python库和工具介绍,以及列表、字典、if语句、类、文件与异常、代码测试等内容;第 二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D游戏开发,如何利用数据生成交互式的信息图,以及创建和定制简单的Web应用,并帮读者解决常见编程问题和困惑。

今天的分享就到此结束,如果我的分享对你有帮助,也欢迎大家转发我的文章让更多人受益,如果你在学习Python的过程当中有遇见任何问题,可以加入我的python交流学习qq群:250933691,多多交流问题,互帮互助,群里有不错的学习教程和开发工具。学习python有任何问题(学习方法,学习效率,如何就业),可以随时来咨询我

海报:

英文版:《Python Crash Course》 - 2016.pdf

《流畅的python》 - 2017.pdf 中级

流畅的python

《流畅的Python》一书致力于帮助Python开发人员挖掘这门语言及相关程序库的优秀特性,避免重复劳动,同时写出简洁、流畅、易读、易维护,并且具有地道Python风格的代码。本书尤其深入探讨了Python语言的高级用法,涵盖数据结构、Python风格的对象、并行与并发,以及元编程等不同的方面。

海报:

流畅的python

https://github.com/fluentpython/example-code 2000+ 星 强烈推荐

英文版本:《Fluent Python》 - 2014.pdf

《简明 Python 教程 》4nd - 2018.pdf 初级

简明 Python 教程

https://github.com/LenKiMo/byte-of-python 近300星

《Python编程快速上手——让繁琐工作自动化》 - 2016.pdf 初级

Python编程快速上手——让繁琐工作自动化

如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高 级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第 二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第 二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。

英文版:《Automate the Boring Stuff with Python Practical Programming for Total Beginners》 - 2015.pdf

https://github.com/IFinners/automate-the-boring-stuff-projects 亚马逊4.5星 77评

《笨办法学_Python》(第三版) - 2018.pdf 初级

笨办法学_Python(第三版)

本书是一本Python入门书,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。本书是基于Python 3.6版本编写的。

本书结构非常简单,除“准备工作”之外,还包括52个习题,其中26个覆盖了输入/输出、变量和函数3个主题,另外26个覆盖了一些比较进阶的话题,如条件判断、循环、类和对象、代码测试及项目的实现等。每一章的格式基本相同,以代码习题开始,按照说明编写代码,运行并检查结果,然后再做附加练习。

笨办法学_Python(第三版)

《Python基础教程》(第3版) - 2017.pdf 初级

Python基础教程(第3版

本书包括Python程序设计的方方面面:首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句;然后循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器;此后探讨了如何将Python与数据库、网络、C语言等工具结合使用,从而发挥出Python的强大功能,同时介绍了Python程序测试、打包、发布等知识;最后,作者结合前面讲述的内容,按照实际项目开发的步骤向读者介绍了10个具有实际意义的Python项目的开发过程。

海报:

Python基础教程(第3版

《Python基础教程(第3版) 》- 2018 Beginning Python: From Novice to Professional - 2017 https://github.com/Apress/beginning-python-3ed 100左右星

《Python Cookbook》第三版中文.pdf 中级

《Python Cookbook》第三版中文

《Python Cookbook(第3版)中文版》介绍了Python应用在各个领域中的一些使用技巧和方法,其主题涵盖了数据结构和算法,字符串和文本,数字、日期和时间,迭代器和生成器,文件和I/O,数据编码与处理,函数,类与对象,元编程,模块和包,网络和Web编程,并发,实用脚本和系统管理,测试、调试以及异常,C语言扩展等。

本书覆盖了Python应用中的很多常见问题,并提出了通用的解决方案。书中包含了大量实用的编程技巧和示例代码,并在Python 3.3环境下进行了测试,可以很方便地应用到实际项目中去。此外,《Python Cookbook(第3版)中文版》还详细讲解了解决方案是如何工作的,以及为什么能够工作。

《Python Cookbook(第3版)中文版》非常适合具有一定编程基础的Python程序员阅读参考。

Python Cookbook(第3版)(中文版) - 2015 Python Cookbook, 3rd Edition - 2013 https://github.com/dabeaz/python-cookbook 2000左右星

《Python学习手册》(原书第4版)- 2011.pdf 中级

《Python学习手册(第4版)》内容简介:学习Python的主要内建对象类型:数字、列表和字典。使用Python语句创建和处理对象,并且学习Python的通用语法模型。使用函数构造和重用代码,函数是Python的基本过程工具。学习Python模块:封装语句、函数以及其他工具,以便构建较大的组件。学习Python的面向对象编程工具,用于组织程序代码。学习异常处理模型,以及用于编写较大程序的开发工具。了解高级Python工具,如装饰器、描述器、元类和Unicode处理等。

Python学习手册(原书第4版)

英文版《 Learning Python 》5th - 2013.pdf

《Python游戏编程快速上手》(中文完整第4版).pdf 初级

Python是一种高级程序设计语言,因其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。

本书通过编写一个个小巧、有趣的游戏来教授Python编程,并且采用直接展示了游戏的源代码,通过实例来解释编程的原理的方式。全书共21章,14个游戏程序和示例贯穿其中,介绍了Python基础知识、数据类型、函数、流程控制、程序调试、流程图设计、字符串操作、列表和字典、图形和动画、碰撞检测、声音和图像等方方面面的程序设计知识。本书可以帮助读者在轻松有趣的过程中,掌握Python游戏编程的基本技能。今天的分享就到此结束,如果我的分享对你有帮助,也欢迎大家转发我的文章让更多人受益,如果你在学习Python的过程当中有遇见任何问题,可以加入我的python交流学习qq群:250933691,多多交流问题,互帮互助,群里有不错的学习教程和开发工具。学习python有任何问题(学习方法,学习效率,如何就业),可以随时来咨询我

本书适合不同年龄和层次的Python编程初学者阅读。

《Python 游戏编程快速上手》(第3版)- 2016.pdf 文字版本

英文 《Invent Your Own Computer Games》 4th - 2017.pdf

亚马逊 4.5星 155评

参考资料

本文最新版本地址

本文涉及的python测试开发库 谢谢点赞!

本文相关海量书籍下载

https://wsvincent.com/best-python-books/

《像计算机科学家一样思考Python》 - 2013.pdf 初级

像计算机科学家一样思考Python

本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程。贯穿全书的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介。 全书共21章,详细介绍Python语言编程的方方面面。本书从基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰的定义,引 领读者循序渐进地学习变量、表达式、语句、函数和数据结构。书中还探讨了如何处理文件和数据库,如何理解对象、方法和面向对象编程,如何使用调试技巧来修正语法错误、运行时错误和语义错误。每一章都配有术语表和练习题,方便读者巩固所学的知识和技巧。此外,每一章都抽出一节来讲解如何调试程序。作者针对每章所专注的语言特性,或者相关的开发问题,总结了调试的方方面面。 本书的第 2版与第 1版相比,做了很多更新,将编程语言从Python 2升级成Python 3,并修改了很多示例和练习,增加了新的章节,更全面地介绍Python语言。 这是一本实用的学习指南,适合没有Python编程经验的程序员阅读,也适合高中或大学的学生、Python爱好者及需要了解编程基础的人阅读。对于首 次接触程序设计的人来说,是一本不可多 得的佳作。

亚马逊 4星 90评

英文版 《Think Python - How to Think Like a Computer Scientist 》2nd - 2016.pdf

《Effective Python.编写高质量Python代码的59个有效方法》 -2016.pdf 中级

像计算机科学家一样思考Python

本书作者BrettSlatkin以使用场景为主导的精练教学方式,汇聚了59条优秀的实践原则、开发技巧和便捷方案,并以实用的代码范例来解释它们。作者根据自己在Google公司多年开发Python基础架构所积累的经验,揭示了Python语言中一些鲜为人知的微妙特性,并给出了能够改善代码功能及运行效率的习惯用法。通过本书,你能够了解到解决关键编程任务所用的最佳方式,并学会编写易于理解、便于维护且利于改进的代码。

亚马逊 英文 4.5星 80+评

《Effective Python 59 Specific Ways to Write Better Python》 - 2015.pdf

编写高质量代码:改善Python程序的91个建议 - 2014.pdf 国产的书,不过是基于python2的,慎重考虑。

《Selenium自动化测试 基于 Python 语言》 - 2018.pdf 初级

Selenium自动化测试 基于 Python 语言

https://github.com/upgundecha/learnsewithpython 星级 低于100

Selenium是一个主要用于Web应用程序自动化测试的工具集合,在行业内已经得到广泛的应用。本书介绍了如何用Python语言调用Selenium WebDriver接口进行自动化测试。主要内容为:基于Python 的 Selenium WebDriver 入门知识、Selenium Python脚本、使用unittest 编写单元测试、生成HTML格式的测试报告、元素定位、Selenium Python API 介绍、元素等待机制、跨浏览器测试、移动端测试、编写一个iOS测试脚本、编写一个Android测试脚本、Page Object与数据驱动测试、Selenium WebDriver的特性、第三方工具与框架集成等核心技术。

《Selenium自动化测试 基于Python语言》适合任何软件测试人员阅读,也适合作为大专院校师生的学习用书和培训学校的教材。

-- 本书虽然为2018年翻译,但是实际基于selenium2和python2,已经过时,很多实例已经不能运行。阅读时可参考 selenium自动化测试工具python笔试面试项目实战5键盘操作,尽管有点过时,依旧是selenium书籍中的佳品。

对应的英文版:《Learning Selenium Testing Tools with Python 》- 2014.pdf

《Python网络数据采集》 初级

Python网络数据采集

Python网络数据采集

《Python网络数据采集 》- 2016.pdf

本书采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。第 1部分重点介绍网络数据采集的基本原理:如何用Python从网络服务器请求信息,如何对服务器的响应进行基本处理,以及如何以自动化手段与网站进行交互。第 二部分介绍如何用网络爬虫测试网站,自动化处理,以及如何通过更多的方式接入网络。

《Web Scraping with Python》 2nd - 2018.pdf

https://github.com/REMitchell/python-scraping 2000左右星

《Python核心编程第3版中文版》 - 2016.pdf

Python核心编程第3版中文版

《Python核心编程(第3版)》是经典畅销图书《Python核心编程(第 二版)》的全新升级版本,总共分为3部分。第 1部分为讲解了Python的一些通用应用,包括正则表达式、网络编程、Internet客户端编程、多线程编程、GUI编程、数据库编程、Microsoft Office编程、扩展Python等内容。第 2部分讲解了与Web开发相关的主题,包括Web客户端和服务器、CGI和WSGI相关的Web编程、Django Web框架、云计算、高 级Web服务。第3部分则为一个补充/实验章节,包括文本处理以及一些其他内容。 《Python核心编程(第3版)》适合具有一定经验的Python开发人员阅读

亚马逊4星 29评 本书的第2版极富盛名,但是此版本已经被其他书籍超越。

英文版本:《Core Python Applications Programming》3rd - 2012.pdf https://github.com/schedutron/CPAP

其他书籍

《Head First Python 》2nd 暂时没找到文字的电子书 初级

Head First Python

《Python Tricks A Buffet of Awesome Python Features》 - 2016.pdf 中级

暂时没有中文版

Python Tricks A Buffet of Awesome Python Features

《Python 201 Intermediate Python》 - 2016.pdf 中级

https://github.com/driscollis/python201bookcode

Python 201 Intermediate Python

《父与子的编程之旅:与小卡特一起学Python》 2nd - 2014.pdf 初级

基于python2的。

《python 101》 - 2016.pdf

还不错的英文书籍。

《Teach Your Kids to Code》 - 2015.pdf

还不错的英文书籍。有中文译本

喜欢本文的小伙伴可以转发或点波关注喔!

 

2018-01-04 12:52:43 qq_34715484 阅读数 544

Python入门

一、基础语法
1、Python中数据类型
整数,浮点数,字符串,布尔值,空值(None)
2、print语句
注意:
1.当我们在Python交互式环境下编写代码时,>>>是Python解释器的提示符,不是代码的一部分。
2.当我们在文本编辑器中编写代码时,千万不要自己添加 >>>。
print语句也可以跟上多个字符串,用逗号“,”隔开,就可以连成一串输出。print会依次打印每个字符串,遇到逗号“,”会输出一个空格。
3、注释
Python的注释以 # 开头,后面的文字直到行尾都算注释。
多行注释是用三引号''' '''。
4、变量
变量是用一个变量名表示,变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头。
5、字符串
(1)字符串可以用''或者""括起来表示。
注意:
如果字符串包含",我们就可以用' '括起来。
同理,如果字符串包含',我们就可以用""括起来.
如果字符串既包含'又包含",对字符串的某些特殊字符进行“转义”,Python字符串用\进行转义。
如:

#LiMing said ”I’m a gay”!应表示为
LiMing said /”I/’m a gay/”!

(2) raw字符串与多行字符串
raw字符串里面的字符不需要转义,r’…’表示单行字符,r’’’…’’’表多行。
6、Unicode
Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

print u'中文'
#多行
u'''第一行 
第二行'''
raw+多行:
ur'''Python的Unicode字符串支持"中文",
"日文",
"韩文"等多种语言'''

二、list
(1)list是一种有序的集合,可以随时添加和删除其中的元素。 用[ ] 把list的所有元素都括起来,就是一个list对象。
(2)按索引访问list(类似于数组)。
(3)倒序访问list. 例如:

L = [95.5, 85, 59]
print L[-1] #输出59
print L[-2] #输出85
print L[-3] #输出95.5

(4)添加元素。append()总是把新的元素添加到 list 的尾部。 insert()方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素。
(5)删除元素。pop()方法会返回被删除的元素。
三、tuple
(1)tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。创建tuple和创建list唯一不同之处是用( )替代了[ ]。获取 tuple 元素的方式和 list 是一模一样的。
(2)创建单元素tuple。t = (1,)
四、if语句,for循环,while循环
注意缩进,4个空格。例如:

(1)

if score>60:
    print 'passed'
#if-elif-else
if age >= 18:
    print 'adult'
elif age >= 6:
    print 'teenager'
elif age >= 3:
    print 'kid'
else:
print 'baby'

(2)for循环

L = ['Adam', 'Lisa', 'Bart']
for name in L:
print name

(3)while循环

N = 10
x = 0
while x < N:
    print x
    x = x + 1

(4)使用break跳出循环,continue继续循环。
五、dict集合(key:value)
dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。
例如:

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}

拓展:len()可以计算任何集合的大小。
(1)访问dict.可使用 d[key] 的形式来查找对应的 value。
注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。
要避免 KeyError 发生,有两个办法:
一是先判断一下 key 是否存在,用 in 操作符。
二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None
(2)dict的特点
dict的第一个特点是查找速度快,dict的第二个特点就是存储的key-value序对是没有顺序的,dict的第三个特点是作为 key 的元素必须不可变,所以list不能作为key。
(3)遍历dict 例如:

for key in d:
...     print key

六、set
set 持有一系列元素,这一点和 list 很像,但是set的元素不重复,而且是无序的,这点和 dict 的 key很像。
(1)创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:

>>> s = set(['A', 'B', 'C'])

(2)set的特点
set的内部结构和dict很像,唯一区别是不存储value。
set存储的元素和dict的key类似,必须是不变对象。
(3)遍历set 例如:

s = set(['Adam', 'Lisa', 'Bart'])
>>> for name in s:
...     print name

(4)更新set
添加元素时,用set的add()方法:
如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:
删除set中的元素时,用set的remove()方法:
如果删除的元素不存在set中,remove()会报错。
六、函数
可以直接从Python的官方网站查看文档:
http://docs.python.org/2/library/functions.html#abs
也可以在交互式命令行通过 help(abs) 查看abs函数的帮助信息。
(1)编写函数
定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。return None可以简写为return。Python的函数返回多值其实就是返回一个tuple。
(2)递归函数
例:
汉诺塔问题
函数 move(n, a, b, c) 的定义是将 n 个圆盘从 a 借助 b 移动到 c。
参考代码:

def move(n, a, b, c):
    if n ==1:
        print a, '-->', c
        return
    move(n-1, a, c, b)
    print a, '-->', c
    move(n-1, b, a, c)

(3)默认参数
例如: int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数:
int()函数的第二个参数是转换进制,如果不传,默认是十进制 (base=10),如果传了,就用传入的参数。
(4)可变参数
可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数。Python解释器会把传入的一组参数组装成一个tuple传递给可变参数。
七、对list切片
(1)['Adam', 'Lisa', 'Bart', 'Paul']
L[0:3]或L[:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。所以结果为['Adam', 'Lisa', 'Bart']
L[:]表示从头到尾,L[:]实际上复制出了一个新list。
切片操作还可以指定第三个参数:

>>> L[::2]
['Adam', 'Bart']

第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。
把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple。
(2)倒序切片


>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']

>>> L[-2:]
['Bart', 'Paul']

>>> L[:-2]
['Adam', 'Lisa']

>>> L[-3:-1]
['Lisa', 'Bart']

>>> L[-4:-1:2]
['Adam', 'Bart']

(3)对字符串切片
字符串 'xxx'和 Unicode字符串 u'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串。
**注:

  1. 有序集合:list,tuple,str和unicode;
  2. 无序集合:set
  3. 无序集合并且具有 key-value 对:dict**

八、迭代

(1)索引迭代

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> for index, name in enumerate(L):
...     print index, '-', name
... 
0 - Adam
1 - Lisa
2 - Bart
3 - Paul

enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。
(2)迭代dict的value

  1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
  2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
    (3)迭代dict的key和value
    items() 方法把dict对象转换成了包含tuple的list。
    iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。
    九、列表
    (1)生成列表
    方法一是循环:
>>> L = []
>>> for x in range(1, 11):
...    L.append(x * x)
... 
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

(2)复杂表达式
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
在生成的表格中,对于没有及格的同学,请把分数标记为红色。
提示:红色可以用 <td style="color:red"> 实现。

如果我们用一个函数来替换字符串的格式化代码,可以得到更清晰的代码:

def generate_tr(name, score):
    return '<tr><td>%s</td><td>%s</td></tr>' % (name, score)
tds = [generate_tr(name, score) for name, score in d.iteritems()]

这样,只需要修改 generate_tr() 函数,必要的时候把score标红。

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
def generate_tr(name, score):
    if score < 60:
        return '<tr><td>%s</td><td style="color:red">%s</td></tr>' % (name, score)
    return '<tr><td>%s</td><td>%s</td></tr>' % (name, score)
tds = [generate_tr(name, score) for name, score in d.iteritems()]
print '<table border="1">'
print '<tr><th>Name</th><th>Score</th><tr>'
print '\n'.join(tds)
print '</table>'

(3)条件过滤 例如:

def toUppers(L):
return [s.upper() for s in L if isinstance(s,str) ] #isinstance(x, str) 可以判断变量 x 是否是字符串;
print toUppers(['Hello', 'world', 101]) #输出[‘HELLO’,’WORLD’]


2019-05-24 21:59:59 aa541505 阅读数 324

Python是适合做大数据分析的计算机语言吗?如今是一个大数据时代,通过数据分析,我们可以得到任何我们想知道的事情,充分挖掘数据的价值。之前有人说过JAVA语言是最适合做数据分析的计算机编程语言之一,在这里,我想说其实Python大数据也是大数据分析最受欢迎的编程语言。

  Python是一个强大的,灵活的,开放的,易于学习的源语言,使用方便,并具有强大的数据操作和分析库。其简单的语法使编程新手很容易学习和掌握,经历过Matlab,,C / C++,java,或Visual Basic,Python提供了一个独特的组合,都能使用编程语言以及使用方便的分析和定量计算

  在过去的十年中,Python已经被用于科学计算、金融等高度量化的领域,石油和天然气,物理,和信号处理。它已被用于提高航天飞机的设计,从哈勃太空望远镜的图像处理,是实现物理实验导致发现了希格斯玻色子的工具(所谓的“上帝粒子”)。

  同时,Python已经被用于构建大规模可扩展的Web应用程序,像YouTube,并推动谷歌内部基础设施。像迪士尼、索尼和梦工厂公司,卢卡斯ILM都依赖Python协调大规模的集群计算机图形服务器轰动的电影产生的意象。根据TIOBE指数,Python是一个在世界上最流行的编程语言,排名高于Perl,Ruby,和JavaScript。

  为什么说Python编程语言也是非常适合做大数据分析的语言之一呢?下面就来为大家分析一下。

  首先,Python语言它很容易上手。它融合了R语言快速成熟的数据挖掘能力之外,还有更实际的产品构建能力。Python语言也正在迅速地获得主流人士的拥护。只要你用过Python语言,你会发现它是更直观,并且相比R语言更容易学习。它在计算机语言中的整体趋势也是上升的很快。使其在统计分析上的能力超越了之前的R语言。

  Python是行业人员正在转换发展的方向。 过去两年里,很明显存在由R 向Python 转化的趋势”在数据处理中,通常存在规模和技巧的权衡,Python语言作为一个折中出现了。

  从对数据分析工作的处理上看,IPython notebook 和NumPy 可以用于轻量工作的处理, 而 Python 则是中级规模数据处理的有力工具。丰富的数据交流社区也是 Python 的优势,它提供了大量的Python 工具包和特性。

  据悉美国银行也是利用Python语言开发了新的产品以及基础设施接口。而且也用于处理金融数据。

  因为Python用途宽广且灵活、易学,所以现在学习python语言的同学拥蜂而至。所有说,Python大数据最受欢迎的编程语言之一!

如果你恰好在学大数据,想要通过本篇文章就学好大数据,我建议你可以把页面关闭掉,大数据是入门学容易,达到高薪是绝对需要系统学习的,当然如果你想着通过大数据提高你的收入,可以详细阅读我推荐的文章

推荐阅读文章

大数据工程师在阿里面试流程是什么?

学习大数据需要具备怎么样基础?

年薪30K的大数据开发工程师的工作经验总结?