python 开发环境的准备:Anaconda ,Jupyter Notebook ,Spyder 。
Numpy ,Pandas ,和Matplotlib 的使用也是在python 学习中非常重要的部分。
本人在按照教程安装完anaconda 环境以及对应的ide :jupyter notebook 之后开始正式的python 的学习。
(注 :在本篇博客中,仅对python的各个功能进行最基础的了解。)
首先是python的数据结构列表list ,元组tuple ,字典dict ,集合set :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 l=[1 ,2 ,3 ,"hello" ] l.append("world" ) l.extend(["a" ]) l.insert(0 ,"lol" ) l.remove("lol" ) del l[3 ]l.pop(4 ) a=[1 ,2 ,3 ,4 ] b=a b=a.copy() a=(1 ,2 ,3 ) d={"Name" :"Charlie" ,"Job" :"Teacher" } print (d["Name" ])d["age" ]=25 del d["age" ]set ([1 ,2 ,3 ,4 ,2 ,1 ,1 ,1 ,2 ,12 ])
对于if语句,注意:
1 2 3 4 if a<b: c=10 else : c=20
对于循环
1 2 3 4 5 6 7 8 9 10 i=0 while i<10 : i=i+1 ; for i in range (10 ): print (i) s="abcdefg" for i in s: print (i)
关于函数:
1 2 3 def sumoftwo (x,y ): result=x+y return result
文件的IO:
1 2 3 4 5 6 7 8 9 file=open ("text.txt" ,"r" ) file.read() file.read(100 ) file.readline() file.readlines() file=open ("test.txt" ,"w" ) file.write("你好" ) file=open ("text.txt" ,"a" ) file.close()
1 2 3 4 file=open ("text.txt" ,"r" ) for line in file: print (line) file.close()
python模块:
1 2 3 4 5 6 7 8 import timetime.time() time.sleep() time.strftime("%y-%m-%d %H:%M:%S" ) import time as tfrom time import strftime as t
1 2 3 4 5 import osos.getcwd() os.listdir() os.listdir(os.getcwd()) os.mkdir()
异常处理:
在这里可以等效为c++中的异常处理的的try 和catch 。
关于Numpy ,Numpy 是一个运行速度非常快的数学库,主要用与数组计算,包含:
一个强大的N维数组对象。
广播功能函数。
整合代码的工具。
线性代数、傅里叶变化、随机数生成等功能。
接着,本人在按照教程安装完numpy 环境以及对应的ide :spyder 。
1 2 3 4 5 6 7 8 9 10 11 12 13 import numpy as npa=np.array([1 ,2 ,3 ,4 ]) b=np.array([[1 ,2 ,3 ],[3 ,2 ,1 ]]) c=np.array([[1 ,2.5 ,3.14 ][13.1 ,2.6 ,1.2 ]]) d=np.array([[1 ,2 ,3 ,4 ]]) a.size a.shape b.shape b.size b.ndim
1 2 3 4 5 6 np.arrange(20 ) np.linspace(0 ,9 ,10 ) m=np.zeros([5 ,5 ]) m=np.ones([5 ,5 ]) m=np.random.rand(5 ,5 ) m=np.random.randn(3 ,3 )
有关矩阵的运算:
1 2 3 4 5 6 7 8 9 10 11 12 13 a=np.array([1 ,2 ,3 ]) b=a.copy() c=a+b c=a*b d=np.dot(a,b) ax=np.reshape(a,(3 ,1 )) bx=np.reshape(b,(1 ,3 )) np.dot(ax,bx) np.vstack() np.hstack() a.T
向量和矩阵的索引:
1 2 3 4 5 6 7 8 9 10 a=np.array([0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ]) a[0 :5 ] a[3 :] a[3 :-1 ] a[:3 ] b=a.reshape(5 ,2 ) b[3 ,0 ] b[3 ] b[:0 ]
Numpy的常用科学计算:
1 2 3 4 5 6 7 8 9 10 np.log(2 ) np.exp(2 ) np.log(a) np.max (a) np.mean(a) np.median(a) np.std(a) np.argmax() np.argmin()
生成一个10*10,边界为1,内部为0的矩阵:
1 2 m=np.ones([10 ,10 ]) m[1 :9 ,1 :9 ]=0
关于pandas :pandas 是为了解决数据分析任务而创建的。pandas 纳入了大量库和一些标准的数据模型,提供了高效的操作大型数据集所需的工具。
关于matplotlib :matplotlib 是基于python语言的开源项目,旨在为python提供一个数据绘图包,实现专业的绘图功能。
1 2 import pandas as pddata=pd.DataFrame([1 ,2 ,3 ,4 ]),columns=["number" ],index=["a" ,"b" ,"c" ,"d" ]
值得一提的是,pandas 可以直接导入csv文件。关于pandas 中的数据预处理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 data1=pd.read_csv('data.csv' ) data.to_csv('data_first.csv' ) data1.loc[5 ,"Age" ] data1.iloc[6 ,1 ] pd.concat([data,data1]) data2=pd.read_csv('data.csv' ) data3=pd.concat([data1,data2]) data4=data3.append([data1,data2]) data.isnull() data.dropna() data.fillna(0 )
关于pandas 中的常用函数:
1 2 3 4 5 6 7 8 data.drop(2 ) data1["Age" ].mean data1.sort_values(by="Age" ) data1.sort_values(by="Job" ) temp=data3["Age" ].values data3["Age" ].describe()
用matplotlib进行画图:
1 2 3 4 5 6 7 8 9 10 import matplotlib.pyplot as pltx=np.linspace(0 ,10 ,100 ) y=np.six(x) plt.plot(x,y) plt.xlabel("x" ) plt.ylabel("y" ) plt.title("asdf123" ) plt.grid(True ) plt.show()
可画出如下的图案:
1 2 3 4 5 6 7 8 9 10 11 y1=np.six(x) y2=np.exp(x) plt.figure() plt.subplot(1 ,2 ,1 ) plt.plot(x,y1,"r" ) plt.subplot(1 ,2 ,2 ) plt.plot(x,y2,"g" )
可画出如下的图案:
1 2 3 4 5 6 plt.xlim() plt.ylim() "r." "r.-" "r--" plt.imshow()
在最后,我们进行简单的网络爬虫的学习。有关爬虫 :可以自动的获取网页内容的程序,能够高效获得网上的海量数据。
过程如下:
通过网址和DNS服务器找到服务器主机。
发送请求获得浏览器结果。
解析获得浏览器呈现的结果。
几种常见的爬虫工具:
Urllib
Requests(页面级)
Scarpy(网站级)
Selenium
对于status_code:
2字头:代表请求已经被服务器成功接收和理解。
3字头:重新定向。
4字头:客户端发生错误。
5,6字头:服务器发生错误或异常。
1 2 3 4 import requestsdata=requests.get("https://www.csdn.net" ) data.encoding="utf-8" data.text
爬虫静态网站实战:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import requestsform bs4 import BeautifulSoup url= header={"user-agent" :"Mozilla/5.0" } data=requests.get(url=url,headers=header) html=data.text soup=BeautifulSoup(html,"lxml" ) lis=soup.find_all(name="div" ,attrs="id" :"row355" ) i=0 for li in lis: temp=li.find(name="div" ,attrs={"_index" :str (i)}) i=i+1 print (temp.text)