- 博客(70)
- 收藏
- 关注
原创 使用Python计算前10000个质数表
质数也叫素数,是指大于1并且除了自己和1以外不能被其它整数整除的自然数。最近阅读《编程人生》,在书中看到了关于质数的描述,看《数学女孩》又看到了相应的描述。于是自己带着兴趣写了一段简单的Python代码求解出了前10000个质数。代码如下: 1 #!/usr/bin/python 2 3 p_num = 0 4 num = 1 5 6 while
2017-04-29 00:58:52 71538 1
原创 数学女孩儿中的数列问题
最近看了几本书,主要是针对编程的,不过看的过程中发现很多内容理解起来十分吃力。看着网络上的评价,买回来了《数学女孩》的一套书。今天开始看,发现有个地方似乎不是很严谨,因为答案从其他角度也能够讲得通。问题是:6,15,35,77后面的数据是什么?我整理了思路,简单在纸上书写了一下如下:横线上下两部分分别是两种思维理解方式,第一种是后面的每个数是前面的数据的两倍加上逐渐
2017-04-27 21:07:11 962
原创 通过插件实现VIM编辑的自动补齐功能
自动补齐的功能我最初接触到实在Notepad++之中,刚开始的时候感觉这个功能有点烦人。可是用习惯了之后倒觉得没有这个功能的编辑器用着真不舒服。在公司使用的是Source Insight,V3版本的软件虽然具有自动补齐的功能但是反应的速度十分慢。VIM能够实现补气的功能,但是并不是自动的,而是需要快捷键去激活一下。考虑是否能够找到一个插件实现这个功能,在网络上搜索了一下,还是比较顺利。看来,大
2017-04-27 01:32:25 1314
原创 Mac下使用python实现简单的目录树展示
在Linux或者Windows下想要查看目录树都可以通过tree命令来实现,两个操作系统中的操作也很相似。使用Linux时,最初以为这是shell中都有这个命令可用。结果使用Mac的时候发现并没有这个命令。为了实现类似的功能,使用python做了一个简单的小脚本。实现不了漂亮的目录树,但是可以实现文件以及所在目录的列表打印。编写代码如下: 1 #!/usr/bin/python
2017-04-27 01:16:03 1070
原创 使用pandas中的DataFrame数据绘制柱状图
折线图是数据分析的一种手段,但是有时候我们也需要柱状图进行不同数据的可视化量化对比。使用pandas的DataFrame方法进行柱状图的绘制也是比较方便的。把之前的折线图绘制代码修改一下如下: 1 from pandasimport Series,DataFrame 2 from numpy.randomimport randn 3 import numpyas
2017-04-26 00:20:48 56317 3
原创 使用pandas的DataFrame的plot方法绘制图像
使用了pandas的Series方法绘制图像体验之后感觉直接用matplotlib的功能好用了不少,又试用了DataFrame的方法之后发现这个更加人性化。写代码如下: 1 from pandasimport Series,DataFrame 2 from numpy.randomimport randn 3 import numpyas np 4 impo
2017-04-26 00:03:12 23588 1
原创 使用Pandas的Series方法绘制图像
通常绘制二维曲线的时候可以使用matplotlib,不过如果电脑上安装了pandas的话可以直接使用Series的绘图方法进行图像的绘制。pandas绘制图像其实也是给予matplotlib的绘图功能处理相应的数据,最终绘制出相应的曲线。在图形对象创建并操作之后还需要调用matplotlib的图像显示方法才能够最终显示出绘制的图像。编写代码如下: 1 import pandasas
2017-04-25 23:23:52 5245
原创 使用matplotlib绘制图像并设置标题以及坐标轴等信息
进行图像绘制有时候需要设定坐标轴以及图像标题等信息,示例代码如下: 1 #!/usr/bin/python 2 3 import matplotlib.pyplotas plt 4 from numpy.randomimport randn 5 6 x = range(100) 7 y = randn(100) 8 9 fig =
2017-04-25 01:14:07 40594
原创 使用matplotlib绘制散点图
使用matplotlib不仅能够绘制出曲线图,还能够绘制出散点图。从数据的分布上,两者的趋势应该是相同的,只是呈现的方式不同。从含以上来说,散点图应该是用于数据统计而曲线则应该是用于连续数据的采集描述。简单写代码如下: 1 import matplotlib.pyplotas plt 2 import numpyas np 3 from numpy.randomi
2017-04-25 00:42:49 3801
原创 使用matplotlib绘制图像初步
绘制图形曲线,我想到的工具一般是MATLAB。不过,鉴于软件的昂贵价格个人折腾显然是买不起的。不过现在开源软件甚至是自由软件给了我们很多选择,python则为很多便捷的功能实现提供了基础。这样,图形绘制时matplotlib便成了我的首选。在此之前,我确实是使用这工具绘制过图像,但是之前并没有好好研究总结过。一般是需要的时候直接去官网看一下相册中的图片集,选择跟我自己所需相似的图片直接拷贝代码
2017-04-24 23:52:42 1002
原创 使用pandas对矢量化数据进行替换处理
使用pandas处理向量化的数据,进行数据的替换时不仅仅能够进行字符串的替换也能够处理数字。做简单的示例如下:In [4]:data = Series(range(5))In [5]:dataOut[5]: 0 01 12 23 34 4dtype: int64In [6]:data.re
2017-04-23 23:37:31 3599
原创 使用pandas批量处理矢量化字符串
进行已经矢量化后的字符串数据,可以使用pandas的Series数据对象的map方法。这样,对于未经矢量化的数据也可以先进行数据的矢量化转换然后再进行相应的处理。举例实现字符串数据的操作,编写代码如下: 1 #!/usr/bin/python 2 3 import numpyas np 4 import pandasas pd 5 from pandas
2017-04-23 23:03:18 3582
原创 使用Python实现邮件发送
如果实现一个服务器的状态通知,可以选择通过邮件提醒的方式实现。Python自带的模块库中有支持smtp协议邮件发送的功能。写了一个简单的小例子实现Python的邮件发送功能如下: 1 #!/usr/bin/python 2 # -*- coding: cp936 -*- 3 4 import os, smtplib, mimetypes 5 from ema
2017-04-20 22:02:00 1431
原创 python pandas中对Series数据进行轴向连接
有时候我们想要的数据合并结果是数据的轴向连接,在pandas中这可以通过concat来实现。操作的对象通常是Series。Ipython中的交互代码如下:In [17]:from pandasimport Series,DataFrameIn [18]:series1 = Series(range(2),index = ['a','b'])In
2017-04-18 08:17:38 12641
原创 使用Python进行目录的对比
如果进行单个文件的比较,可以使用difflib模块。虽然filecmp模块也能够进行单个文件的对比,但是前者能够提供观感更好的报告。如果我们只是想看一下两个目录中的某个文件是否一致而不关系其中的内容,那么后者或许是更改选的选择。如果进行目录的对比,那么可以使用filecmp模块了。在IPython中进行简单的命令交互演示功能如下:In [1]:import filecmpI
2017-04-18 07:52:26 2598
原创 使用Python实现一个文本对比报告生成工具
借助于difflib的功能,可以针对我们的使用情况进一步进行功能的聚合。我想要的功能是输入两个文件名以及一个输出报告的文件名之后,运行直接给出最终的报告。代码实现如下: 1 import sys 2 import difflib 3 4 try: 5 file1 = sys.argv[1] 6 file2 = sys.argv[2]
2017-04-17 08:27:25 6258 1
原创 Python中的字符串序列拼接方法
最初看到这个功能的时候,不由得来了积分亲切感。因为在Perl中也有一个用于字符串拼接的join,而那个功能我用了不知道多少次。先写一个小脚本如下: 1 #!/usr/bin/python 2 3 str_list = ['aa','cc','bb','12'] 4 lines = '\n'.join(str_list) 5 print lines 6
2017-04-17 08:05:07 3138
原创 使用Python进行文本信息的比较并生成HTML报告
使用Python可以实现类似Linux中diff的命令,还能够输出HTML文档,这是我一直期待的。如果办公环境十分封闭,使用diff命令都难的时候,这无疑是很好的补充。Python中的标准库有一个difflib,借助于这个库就能够实现所需的比较。两个文件分别如下:d1.py 1 from IPyimport IP 2 3 ip1 = IP('192.168.1.
2017-04-17 07:47:35 3868
原创 使用Python获取并处理IP的类型及格式
公网与私有网络的判断其实十分简单,只要记住私有网络的三个网段。不过,对于记性不好的人或者学识不是很高的机器来说,有一种判断方法还是有必要的。写如下脚本: 1 from IPyimport IP 2 3 ip1 = IP('192.168.1.2') 4 ip2 = IP('11.12.13.14') 5 6 print("ip1 type: %s"
2017-04-16 14:45:15 2962
原创 使用Python获取网段IP个数以及地址清单
使用Python获取网段的IP个数以及地址清单需要用到IPy的库,而相应的方法主要就是IP。写小脚本如下: 1 from IPyimport IP 2 3 ip = IP('192.168.0.0/16') 4 print(ip.len()) 5 for x in ip: 6 print(x) 7 运行结果:Greyde
2017-04-16 14:25:08 13308
原创 使用Python pandas对不同列名的数据进行合并
使用pandas的merge方法进行数据合并的时候,如果列名相同则可以省去列名的指定,pandas会进行自动的识别。但是如果两组数据的列名不一致,不加任何参数直接进行默认的操作则会导致报错。例如有如下两组数据:In [40]:df1Out[40]: data1 key1:0 0 c1 1 d2 2 e3
2017-04-16 11:28:57 39158 1
原创 pandas进行数据的交集与并集方式的数据合并
数据合并有多种方式,其中最常见的应该就是交集和并集的求取。之前通过分析总结过pandas数据merge功能默认的行为,其实默认下求取的就是两个数据的“交集”。有如下数据定义:In [26]:df1Out[26]: data1 key0 0 b1 1 b2 2 a3 3 c4 4 a
2017-04-16 11:01:47 35621
原创 Python pandas数据库风格的数据合并
我个人不是很熟悉数据库,不是很清楚什么是数据库风格。不过,通过简单的测试看一下这到底是什么功能,做一下简单的总结还是可以的。In [1]:import numpyas npIn [2]:import pandasas pdIn [3]:from pandasimport Series,DataFrameIn [4]:
2017-04-16 09:31:41 1032
原创 使用pandas读取csv文件的指定列
根据教程实现了读取csv文件前面的几行数据,一下就想到了是不是可以实现前面几列的数据。经过多番尝试总算试出来了一种方法。之所以想实现读取前面的几列是因为我手头的一个csv文件恰好有后面几列没有可用数据,但是却一直存在着。原来的数据如下:GreydeMac-mini:chapter06 greyzhang$ cat data.csv 1,name_01,coment_01,,,,2,
2017-04-15 20:36:03 119173 6
原创 使用pandas将numpy中的数组数据保存到csv文件
接触pandas之后感觉它的很多功能似乎跟numpy有一定的重复,尤其是各种运算。不过,简单的了解之后发现在数据管理上pandas有着更为丰富的管理方式,其中一个很大的优点就是多出了对数据文件的管理。如果想保存numpy中的数组元素到一个文件中,通过纯Python的文件写入当然是可以实现的,但是总觉得是少了一点便捷性。在这方面,pandas工具的使用就会让工作方便很多。下面通过一个简单的小例子
2017-04-15 17:55:07 30143 4
原创 使用pandas读取csv文件指定的前几行
用于存储数据的csv文件有时候数据量是十分庞大的,然而我们有时候并不需要全部的数据,我们需要的可能仅仅是前面的几行。这样就可以通过pandas中read_csv中指定行数读取的功能实现。例如有data.csv文件,文件的内容如下:GreydeMac-mini:chapter06 greyzhang$ cat data.csv ,name_01,coment_01,,,,2,name
2017-04-15 17:26:54 82118
原创 pandas读取完的csv数据格式
使用pandas读取csv文件读取出来的数据其实还是有一定附加格式的,那就是行列标题。In [18]:data1 = pd.read_csv('data.csv')In [19]:data1Out[19]: index name comment Unnamed: 3 Unnamed: 4 Unnamed: 5 Unnamed: 60
2017-04-14 00:10:02 7330
原创 使用pandas read_table读取csv文件
read_csv是pandas中专门用于csv文件读取的功能,不过这并不是唯一的处理方式。pandas中还有读取表格的通用函数read_table。接下来使用read_table功能作一下csv文件的读取尝试,使用此功能的时候需要指定文件中的内容分隔符。查看csv文件的内容如下;In [10]:cat data.csvindex,name,comment,,,,1,name
2017-04-13 23:53:02 19782
原创 使用python pandas读取csv文件数据
csv是我接触的比较早的一种文件,比较好的是这种文件既能够以电子表格的形式查看又能够以文本的形式查看。最早接触是在别人的Perl脚本中,或许是为了充分利用Perl的文本处理能力。不过,日常的生活工作中我用到的比较多的倒还是电子表格。创建一个电子表格如下:使用Mac中Numbers功能将其导出为csv文件,使用文本查看文件内容如下:GreydeMac-mini:chapter
2017-04-13 23:23:29 79272 2
原创 系统进程与线程关系以及使用Python获取的方法
以前一直把两个概念混为一谈,其实,两者之间还是有很大的差异。进程确切来说是一个程序,一个程序需要有自己独立的内存等信息,而线程则是在这些框定下能够独立执行的程序单元。这样,一个进程的话至少会有一个线程。修改一份之前写过的代码如下: 1 #!/usr/bin/python 2 3 import psutil 4 5 pids = psutil.pids()
2017-04-13 08:21:28 1384
原创 使用python获取系统所有进程PID以及进程名称
psutil模块中提供了进程管理方法,引用其中的几个方法就能够获得进程的相关信息。简单写个小脚本测试一下,顺便看看我的Mac中到底运行着多少个进程,进程都是什么。代码: 1 #!/usr/bin/python 2 3 import psutil 4 5 pids = psutil.pids() 6 for pid in pids: 7
2017-04-13 00:50:52 36783
原创 使用python获取系统网络信息
psutil模块确实是运维工作中比较有用的模块,除了获取系统的硬件信息之外还能够获取到网络信息。简单的测试如下:In [8]:psutil.net_io_counters()Out[8]:snetio(bytes_sent=40186207L, bytes_recv=620160806L, packets_sent=454876L, packets_recv=469843L,
2017-04-13 00:27:33 3696
原创 使用python获取电脑的磁盘信息
使用Python获取电脑的磁盘信息需要借助于第三方的模块psutil,这个模块需要自己安装,纯粹的CPython下面不具备这个功能。在iPython交互界面中进行如下演示:查看电脑的磁盘分区:In [1]:import psutilIn [2]:psutil.disk_partitions()Out[2]:[sdiskpart(device='/dev/di
2017-04-13 00:05:35 10333 2
原创 Mac下安装iPython
没有想象中那么顺利,尽管我已经搞定了pip,但是依然还是遇到了问题。安装的时候为了能够让安装顺利,需要使用sudo在管理员模式下安装。不过,为了能够让当前目录使用安装的东西,需要加上-H的参数。安装操作如下:GreydeMac-mini:~ greyzhang$ sudo -H pip install ipythonPassword:Collecting ipython Do
2017-04-12 23:31:43 12011
原创 一种带命令参数的touch命令功能的Python实现
这个还是很实用的,尤其是在封闭的系统环境中,你自己无法安装甚至拷贝程序的时候。恰好你的计算机中有Python,那么一切都水到渠成了。 主要用的模块是Python的sys模块,用它是为了支持参数的传递。 简单的代码实现如下:#!/usr/binpython import sys defTouch(file_name): fid =
2017-04-12 22:16:25 2267
原创 Python运维之获取系统CPU信息
使用Python进行运维工作的时候有时候需要获取CPU的信息,这在psutil模块库的帮助下非常容易实现。 常见的CPU信息有以下几种: 1,用户时间以及百分比; 2,系统时间以及百分比; 3,空闲时间以及百分比; 4,CPU的硬件信息; 前3个中的时间可以采用cpu_times方法获取,百分比可以使用
2017-04-12 21:58:59 7856
原创 Python运维之获取操作系统的内存信息
要使用Python获取计算机的内存信息需要用到psutil模块,能够获得的内存信息有内存总量、可用内存总量、已用内存量、内存使用百分比等信息。 写一个简单的小脚本,代码如下:#!/usr/bin/python import psutil pc_mem =psutil.virtual_memory()div_gb_factor =(1024.0 ** 3)
2017-04-12 21:58:17 6714
原创 PowerShell中的输出文件重定向命令Out-File
输出文件重定向其实有个简洁的命令>,我经常使用这个,主要还是因为在不同的操作系统命令中这个符号都能够奏效。 为了能够了解PowerShell的风格,还是有必要熟悉一下PowerShell的命令。Cmdlet命令Out-File可以实现输出文件的重定向。这样可以在很多时候方便地通过文件记录命令执行的输出文本提示符号。使用示范:PSE:\WorkSpace\01_编程语言\04
2017-04-09 23:33:41 12682
原创 numpy中以文本的方式存储以及读取数据
Numpy中除了能够把数据以二进制文件的方式保存到文件中以外,还可以选择把数据保存到文本文件中。如果我有磁盘存储的需要,我一般会选择文本的存储,因为后期的处理工具会有更多的选择。 文本存储数据文件可以采用savetxt的功能,而相应文件的加载可以采用loadtxt的功能。与二进制存储不同,savetxt的功能不会自动追加扩展名。 接下来做简单的操作练习示范:In
2017-04-09 22:08:25 2734
原创 Windows批处理中cat命令的替代者type
在使用bash的时候,cat是一个很常用的命令。通常查看文本内容的时候都会使用cat,它能够展示文本的信息同时还仅仅是对文件的读取操作,并不会改变文件的内容。鉴于有时候有些情况下没有bash使用,比如说有些公司禁止员工自由使用开发工具并且只能够使用Windows,那么Windows下还是有替代者的。唯一需要额外考虑的就是批处理的一点点学习成本。 查看批处理中type的使用帮助如下:
2017-04-09 20:32:12 20055
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人