Python
Python学习笔记。
LauZyHou
Microsoft Software Development Engineer
展开
-
【Python学习笔记】48:用Matplotlib自定义绘制图形,将Matplotlib绘制的图显示到Tkinter中
无聊时候接着学习下董老师的数据可视化课程吧。用Matplotlib自定义绘制图形三次贝塞尔曲线有四个控制点,曲线在起始点与1,2两个点相切,在结束点与3,4两个点相切。from matplotlib.path import Pathfrom matplotlib.patches import PathPatchfrom matplotlib import pyplot as pltf...原创 2019-02-15 00:01:48 · 4146 阅读 · 1 评论 -
【Python学习笔记】47:virtualenv和virtualenvwrapper的基本使用
virtualenv的基本使用以创建名为lzh的虚拟环境并使用为例。在Windows下安装使用pip或conda直接安装。创建虚拟环境将在当前目录下创建一个以虚拟环境子目录。virtualenv lzh可以看到使用了默认的Python解释器来创建,如果要指定其它的,可以用-p参数后跟具体的解释器目录。启动虚拟环境cd .\lzh\Scripts.\activate.bat...原创 2019-01-13 19:11:57 · 247 阅读 · 0 评论 -
【Python学习笔记】46:随机漫步,埃拉托色尼筛法,蒙特卡洛算法,多项式回归
学习《Python与机器学习实战》和《scikit-learn机器学习》时的一些实践。随机漫步import matplotlib.pyplot as pltimport numpy as np'''一维随机漫步'''# 博弈组数n_person = 2000# 每组抛硬币次数n_times = 500# 抛硬币次数序列,用于当绘制点的横坐标t = np.arange...原创 2018-11-18 13:20:07 · 795 阅读 · 0 评论 -
【Python学习笔记】45:认识Matplotlib和pyecharts数据可视化
学习《Python3爬虫、数据清洗与可视化实战》时自己的一些实践。Matplotlib数据可视化数据准备import pandas as pdimport matplotlib.pyplot as pltdf = pd.read_csv("E:/Data/practice/taobao_data.csv")# 求不同位置的产品的数值字段(价格,成交量)的均值,然后按成交量降序df...原创 2018-11-15 21:21:44 · 2410 阅读 · 2 评论 -
【Python学习笔记】44:Series.apply()列数据批量处理,Series.str.extract()正则匹配
学习《Python3爬虫、数据清洗与可视化实战》时自己的一些实践。Series.apply()列数据批量处理先将该列取出,形成Series对象,再调用apply()方法传入用于处理的函数,这个过程就像map()一样。import pandas as pd# 各国人口数据文件df_pop = pd.read_csv("E:/Data/practice/european_cities.c...原创 2018-11-14 20:35:24 · 3813 阅读 · 0 评论 -
【Python学习笔记】43:Pandas时序数据处理
学习《Python3爬虫、数据清洗与可视化实战》时自己的一些实践。Python中时间的一些常用操作import time# 从格林威治时间到现在,单位秒print('系统时间戳:', time.time())print('本地时间按格式转成str:', time.strftime('%Y-%m-%d %X', time.localtime()))# 无参的localtime返回...原创 2018-11-14 17:49:15 · 1290 阅读 · 2 评论 -
【Python学习笔记】42:Pandas数据缺失值/异常值/重复值处理
学习《Python3爬虫、数据清洗与可视化实战》时自己的一些实践。缺失值处理Pandas数据对象中的缺失值表示为NaN。import pandas as pd# 读取杭州天气文件df = pd.read_csv("E:/Data/practice/hz_weather.csv")# 数据透视表df1 = pd.pivot_table(df, index=['天气'], colu...原创 2018-11-14 15:19:49 · 15304 阅读 · 2 评论 -
【Python学习笔记】41:认识Pandas中的数据变形
学习《Python3爬虫、数据清洗与可视化实战》时自己的一些实践。Pandas数据变形关于stack()和unstack()见这里和这里。import pandas as pdimport numpy as np# 读取杭州天气文件df = pd.read_csv("E:/Data/practice/hz_weather.csv", delimiter=',', encoding=...原创 2018-11-14 10:32:19 · 1312 阅读 · 0 评论 -
【Python学习笔记】40:Pandas中DataFrame的分组/分割/合并
学习《Python3爬虫、数据清洗与可视化实战》时自己的一些实践。DataFrame分组操作注意分组后得到的就是Series对象了,而不再是DataFrame对象。import pandas as pd# 还是读取这份文件df = pd.read_csv("E:/Data/practice/taobao_data.csv", delimiter=',', encoding='utf-...原创 2018-11-14 09:28:26 · 36143 阅读 · 2 评论 -
【Python学习笔记】39:认识SQLAlchemy,简单操作Pandas中的DataFrame
学习《Python3爬虫、数据清洗与可视化实战》时自己的一些实践。认识SQLAlchemySQLAlchemy是Python的ORM工具,就像Java有Hibernate一样,实现关系型数据库中的记录与Python自定义Class的对象的转化,实现操作之间的映射。书上底层用了pymysql,但是实践中会出现问题,网上查了一下改用mysql-connector-python就可以了。fro...原创 2018-11-13 19:19:38 · 1832 阅读 · 0 评论 -
【Python学习笔记】38:使用Selenium抓取去哪儿网动态页面
学习《Python3爬虫、数据清洗与可视化实战》时自己的一些实践。在去哪儿网PC端自由行页面,用户需要输入出发地和目的地,点击开始定制,然后就可以看到一系列相关的旅游产品。在这个旅游产品页换页不会改变URL,而是重新加载,这时页码没有体现在URL中,这种动态页面用传统的爬虫实现不了。安装配置Selenium本身用Anaconda安装,作为模拟用户行为的自动化测试工具,它另外还要使用浏览器驱...原创 2018-11-09 19:57:23 · 1208 阅读 · 0 评论 -
【Python学习笔记】37:认识Scrapy爬虫,爬取沪深A股信息
学习《Python3爬虫、数据清洗与可视化实战》时自己的一些实践。认识Scrapy爬虫安装书上说在pip安装会有问题,直接在Anaconda里安装。创建Scrapy项目PyCharm里没有直接的创建入口,在命令行创建(从Anaconda安装后似乎自动就在环境变量里了,可以直接用Scrapy命令):然后从PyCharm项目选择页面里Open一下即可。右击项目的同名子目录,将其Mark...原创 2018-11-09 15:41:41 · 1251 阅读 · 2 评论 -
【Python学习笔记】36:抓取去哪儿网的旅游产品数据
学习《Python3爬虫、数据清洗与可视化实战》时自己的一些实践。书上这章开篇就说了尽量找JSON格式的数据,比较方便解析(在python里直接转换成字典),去哪儿网PC端返回的不是JSON数据,这里抓取的是它的移动端的数据。如果是就散落在网页上,我觉得就像上篇学习的那样用BeautifulSoup这样的网页解析器去解析。解决"您的访问不合法,请联系技术人员"在实践这个的时候总是出现上面...原创 2018-11-08 18:16:26 · 2520 阅读 · 1 评论 -
【Python学习笔记】35:爬虫基础和相关产品API(和风天气)使用实例
学习《Python3爬虫、数据清洗与可视化实战》时自己的一些实践。在网站URL后面跟robots.txt一般就可以看到网站允许和禁止爬取的资源。GET请求获取响应内容最基本的爬虫。import requests'''中国旅游网 /www.cntour.cn'''url = 'http://www.cntour.cn'response = requests.get(url) ...原创 2018-11-08 10:44:46 · 3033 阅读 · 0 评论 -
【Python学习笔记】34:函数参数、闭包、lambda函数、装饰器、偏函数
函数参数位置参数一般写的函数调用按顺序传入参数,这种参数就是位置参数,即通过位置来知道这个参数是传给哪个参数的。pow(x,n)默认参数即为参数设定默认值,具有默认值的参数可以不传入,所以必选参数在前,默认参数在后。廖老师提到"变化大的参数放前面,变化小的参数放后面",但我觉得还是要视函数各个参数的实际意义和语义来考虑。pow(x,n=2)默认参数必须指向不变对象,因为默认参数的...原创 2018-10-05 14:18:56 · 293 阅读 · 0 评论 -
【Python学习笔记】33:生成器、迭代器、高阶函数
生成器生成器(generator)相比列表推导式,只占用很小的空间,因为它是一边循环一边推算,通过next()调用下一元素,并在结束时抛出StopIteration异常,在语法上只要把[]换成()即可。a = (i * i for i in range(10))print(a) # 生成器对象,不能直接输出# 用"next(生成器)"或者"生成器.__next__()"来返回下一个元素...原创 2018-10-04 11:51:36 · 272 阅读 · 0 评论 -
【Python学习笔记】32:使用pymongo操作MongoDB进行CRUD操作
环境配置使用Anaconda安装pymongo模块:conda install pymongoCRUD操作from pymongo import MongoClientimport pymongo# 连接到MongoDBconn = MongoClient('127.0.0.1', 27017)# 获取某个DB对象(这里DB的名字是newlzh)db_lzh = conn.n...原创 2018-08-15 00:38:28 · 421 阅读 · 0 评论 -
【Python学习笔记】31:scipy图像测量
这个假期抽时间继续跟着董老师的视频学习python扩展库的使用。最大/最小值,中值,平均值获取最大/最小值位置时,返回的是第一次检索到的位置。注意scipy中对图像的处理往往是对存了图像像素值的array数组的处理。董老师视频里直接用的misc模块里的face,我之前那台windows都可以,在linux下缺少_bz2的模块…暂时还没解决,干脆另外找张灰度图。程序#!/usr/local...原创 2018-02-06 17:29:21 · 1611 阅读 · 0 评论 -
【Python学习笔记】30:非函数形式但可用方程描绘的决策线的寻找和绘制
简述决策线是2特征时的分类超平面方程,当方程不能表示成y=f(x)或者x=f(y)形式时,不能直接用x或者y方向的单向采样绘制决策线。zyq给出的做法是,在一个范围内用采样的点(x,y)去激活分类器,得到其类别,从而得到这个范围内各个采样点的类别,将不同类别的点绘制成不同颜色,可以展示出分类面的形状特征。这种做法的缺陷是,采样范围难以察觉,并且得到的实际上是决策线两侧的点。可以用p原创 2018-01-10 10:47:54 · 684 阅读 · 0 评论 -
【Python学习笔记】29:模拟OPT和LRU算法
LRU之前做过,OPT 最佳淘汰算法是一种理想状态的算法,是去寻找后面没有使用,或者最晚使用的那个cache中的页面淘汰掉。急着回去睡觉,不废话了。代码实现#-*-coding:utf-8-*-from numpy import *#一行四个输出def MyPrint(lst,strlst): i=0 for j in range(len(lst)): print strls...原创 2018-01-08 01:32:29 · 1418 阅读 · 1 评论 -
【Python学习笔记】28:scipy的ndimage模块中有关数学形态学
scipy的ndimage模块也提供了有关数学形态学的方法。 下面的运算中,可以将黄色部分视为一种物体(不见得是连通的),紫色部分是背景。 *腐蚀运算 腐蚀是一种消除边界点,使边界向内部收缩的变换过程。可以用来消除小且无意义的信号。在这里也就是黄色部分那些散落在背景中的小块可以经由腐蚀运算消除。>>> import numpy as np>>> from scipy import ndima原创 2017-07-29 19:12:38 · 10002 阅读 · 0 评论 -
【Python学习笔记】27:scipy中ndimage模块作图像滤波
scipy的ndimage可以用于做n维图像的处理。高斯滤波>>> from scipy import misc>>> from scipy import ndimage>>> import matplotlib.pyplot as plt>>> test=misc.ascent() #用于测试的图像>>...原创 2017-07-29 12:14:12 · 6846 阅读 · 0 评论 -
【Python学习笔记】26:scipy卷积运算
scipy的signal模块经常用于信号处理,卷积、傅里叶变换、各种滤波、差值算法等。两个一维信号卷积>>> import numpy as np>>> x=np.array([1,2,3])>>> h=np.array([4,5,6])>>> import scipy.signal>>> sci...原创 2017-07-28 23:48:03 · 28904 阅读 · 1 评论 -
【Python学习笔记】25:scipy中值滤波
中值滤波技术能有效抑制噪声,通过把数字图像中一点的值用该点周围的各点值的中位数来代替,让这些值接近,以消除原图像中的噪声。模拟中值滤波>>> import random>>> import numpy as np>>> import scipy.signal as signal>>> x=np.arange(0,10...原创 2017-07-28 17:46:11 · 31056 阅读 · 2 评论 -
【Python学习笔记】24:scipy扩展库的安装与初识
scipy是建立在在numpy的基础上的扩展库,增加了很多用于数学计算、科学计算的模块。安装scipy用pip安装scipy时候报错,这个库的安装是依赖特定的numpy库的,不能直接用pip来安装。首先先用pip卸载之前用的numpy,只要在scripts目录下pip uninstall numpy即可。打开IDLE查看一下自己的python版本,这样知道后面要下什么版本的。用pip...原创 2017-07-28 14:42:32 · 1277 阅读 · 0 评论 -
【Python学习笔记】23:numpy的add和multiply
add和multiply是numpy里比较常用的两种运算,分别是加法和乘法运算。加法运算>>> np.add.accumulate([1,2,3]) #累加array([1, 3, 6], dtype=int32)累加np.add.accumulate()适用于python序列(串不行)和numpy数组,每一个位置的元素和前面的所有元素加起来求和,得到的始终是numpy...原创 2017-07-27 16:20:25 · 9355 阅读 · 2 评论 -
【Python学习笔记】22:numpy文件读写和一些常量
*读写文件>>> import numpy as np>>> x=np.random.rand(4,10) #创建4行10列的数组>>> np.save('data.npy',x) #保存到文件中去>>> y=np.load('data.npy') #读出来>>> yarray([[ 0.05172888, 0.78455176, 0.99746837, 0.98090592, 0原创 2017-07-26 18:01:40 · 2875 阅读 · 0 评论 -
【Python学习笔记】21:numpy傅里叶变换
一个简单的傅里叶变换>>> import numpy as np>>> import matplotlib.pyplot as plt>>> x=np.linspace(0,2*np.pi,50)>>> xarray([ 0. , 0.12822827, 0.25645654, 0.3846848...原创 2017-07-26 17:28:21 · 35068 阅读 · 2 评论 -
【Python学习笔记】20:numpy广播、分段函数、频次统计
用int64()取整>>> x=np.random.rand(10)*50>>> xarray([ 23.22184111, 32.50075356, 42.89971884, 29.7081743 , 9.59936762, 13.48713739, 31.01003042, 9.83144093, 3...原创 2017-07-25 16:31:53 · 7816 阅读 · 0 评论 -
【Python学习笔记】19:numpy数组布尔运算和切片
改变数组形状>>> a=np.arange(1,11,1)>>> aarray([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])>>> a.shape=2,5>>> aarray([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10...原创 2017-07-25 15:50:27 · 9016 阅读 · 0 评论 -
【Python学习笔记】18:numpy数组函数与矩阵运算
数组支持函数运算>>> x=np.arange(0,100,10,dtype=np.floating)>>> np.sin(x) #对每个元素计算正弦array([ 0. , -0.54402111, 0.91294525, -0.98803162, 0.74511316, -0.26237485, -0.3048106...原创 2017-07-24 22:07:25 · 1701 阅读 · 0 评论 -
【Python学习笔记】17:numpy数组排序
排序>>> x=np.array((10,6,7,9,4))>>> np.argsort(x)array([4, 1, 2, 3, 0], dtype=int64)>>> x[_] #根据argsort所得下标去访问原来的数组x就得到排序后的数组array([ 4, 6, 7, 9, 10])>>> x...原创 2017-07-20 15:38:20 · 1308 阅读 · 0 评论 -
【Python学习笔记】16:numpy数组四则运算
改变数组元素值>>> x=np.arange(8)>>> xarray([0, 1, 2, 3, 4, 5, 6, 7])>>> np.append(x,8)array([0, 1, 2, 3, 4, 5, 6, 7, 8])>>> np.append(x,[9,10])array([ 0, 1, 2, ...原创 2017-07-20 14:42:53 · 6619 阅读 · 0 评论 -
【Python学习笔记】15:numpy创建各种数组
前段时间买了董老师的数据分析与科学计算可视化课程,假期抽时间学习一下。用于数据分析与科学计算可视化的模块有很多:如statistics提供了一些常用的统计分析的函数,numpy科学计算包作数值计算扩展库(将python当成matlab来用),scipy作为numpy的拓展,pandas提供了高效地操作大型数据集所需的工具,matplotlib做数据可视化。这门课主要也是用这几个包。生成数组...原创 2017-07-20 12:23:22 · 5621 阅读 · 1 评论 -
【Python学习笔记】14:开发一个完整的爬虫
跟着视频学做了一个爬虫,但是却有些很烦的编码问题没能解决。开发一个爬虫的基本步骤①确定抓取目标,即哪些网站的哪部分数据。②分析目标,即抓取这些网站的策略。要分析抓取的页面的url格式,用来限定要抓取的页面的范围。要分析要抓取的数据的格式,往往是对应标签的格式。要分析页面的编码,在网页解析器这里要确定编码才能进行解析。③编写代码:爬虫调度端、url管理器、网页下载器、网页解析器、输出...原创 2017-06-07 19:51:44 · 1200 阅读 · 0 评论 -
【Python学习笔记】13:用梯度下降法求解最优值问题
用梯度下降法求解最优值问题梯度是函数在某点沿每个坐标的偏导数构成的向量,它反映了函数沿着哪个方向增加得最快。因此要求解一个二元函数的极小值,只要沿着梯度的反方向走,直到函数值的变化满足精度即可。这里打表存储了途径的每个点,最后在图上绘制出来以反映路径。import matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import ...原创 2017-05-21 02:25:38 · 6441 阅读 · 1 评论 -
【Python学习笔记】12:用matplotlib绘制3D函数图像
显示两个3D坐标轴①用pyplot的figure()函数可以创建一个figure对象②以它为参数创建Axes3D对象,使之具有3D坐标轴③pyplot的show()方法可以显示所有figure对象import matplotlib.pyplot as plt #绘图用的模块from mpl_toolkits.mplot3d import Axes3D #绘制3D坐标的函数fi...原创 2017-05-20 23:27:35 · 33825 阅读 · 7 评论 -
【Python学习笔记】11:带散点图的k-means算法
带散点图的k-means算法先安装好matplotlib包,用pip安装就可以。import mathimport randomf=open("dataforkmeans - .txt")a=[]b=[]tag=1 for k in f.read().split(): if tag==1: a.append(float(k)) ...原创 2017-05-18 16:33:28 · 8646 阅读 · 1 评论 -
【Python学习笔记】10:Beautiful Soup模块的使用
Beautiful Soup模块的使用流程①根据下载好的HTML网页字符串,创建一个Beautiful Soup对象,创建时就将整个网页字符串加载成了一个DOM树。②根据这个DOM树,进行各个节点的搜索:find(只会搜索出第一个满足要求的节点)、find_all(搜索出所有满足要求的节点),这两个方法的参数是一模一样的。③得到节点以后,就可以访问节点的名称、属性、文字(相应地,在搜索...原创 2017-05-12 16:23:24 · 1631 阅读 · 0 评论 -
【Python学习笔记】9:用k-means算法对数据进行聚类
①随机在图中取K个种子点。②然后对图中的所有点求到这K个种子点的距离,假如点Pi离种子点Si最近,那么Pi属于Si点群。③接下来,要移动种子点到属于他的“点群”的中心。④重复②和③步,直到种子点没有移动。老师给的文件最后多了一个"]"符,把它删掉再做。注意。因为最开始的四个初始点是随机选的,如果选的好几步之内就能完成,如果选的不好可能要十几步,每次运行步骤数都不一样,但是最...原创 2017-05-11 21:24:37 · 1989 阅读 · 0 评论