1.封装
(1)封装是面对编程的一大特点
(2)面向编程的第一步——将属性和方法封装到一个抽象的类中
(3)外界使用类创建对象,然后让对象调用方法
(4)对象方法的细节都被封装在类的内部
2.python能够自动的将一对口号内的不同行的代码连接在一起
3.一个对象的属性可以是另一类创建的对象
4.is用于判断两个变量引用对象是否为同一个
==用于判断引用变量的值是否相等
5.私有属性和私有方法为不被外部引用的属性名和方法,定义是在属性名和方法名前增加两个下划 线。
6. 封装根据职责将属性和方法封装到一个抽象的类中
7.多态不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度
8.多态 不同的字对象调用相同的父类方法,产生不同的执行结果
(1)多态可以增加代码的灵活度
(2)以继承和重写的方法为前提
(3)是调用方的技巧,不会影响到类的内部设计
9.类方法的使用——@classmethod
def 类名(cls)
内容
10.类属性——只需要在类名下方输入一个赋值语句
11.静态方法——@staticmethod 调用静态方法可使用类名的方式
def 类名()
内容
12.类方法只访问类属性;实例方法即可访问类属性,又可访问实例属性;静态方法即不访问类属性又不方法实例属性。
13.单例设计模式
(1)目的——让类创建的对象,在系统中只有唯一的一个实例
11.网络
(1)创建套接字
udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
(2)使用套接字收发数据
udp_socket.sendto("…".eccode(“utf-8”),(“ip”,端口号))
udp_socket.recvfrom(1024)
(3)关闭套接字
udp_socket.close()
(2)每一次执行 类名()返回的对象,内存地址是相同的
14.new__方法:(1)在内存中为对象分配空间 (2)返回对象的引用
15.调用父方法时,使用super().方法名
16.主动抛出异常:(1)创建一个Exception的对象(2)使用ralse关键字抛出异常对象
17.大驼峰命名法:首字母大写,单词与单词之间用下划线连接
18.包:(1)包是一个包含多个模块的特殊目录(2)目录下有一个特殊的文件__init.py(3)包名的命名方式和变量一致,小写字母+_
19.read 读取文件时会默认将文件内的内容一次性读取,而readline则是一次只读取一行内容。
20.在python中使用os模块来实现文件/目录的常用管理操作
21.eval()将字符串当成有效的表达式来求值并返回计算结果
22.在一个函数中对全局变量进行修改的时候,到底是否需要使用global进行说明,要看是否对全局变量的执行指向进行了修改。如果修改了执行,即让全局变量指向一个新的地方,那么必须使用global;如果仅仅修改了指向的空间中的数据,此时不用必须使用global。
23.创建空列表可使用 列表名=list() 代替 列表名=[]
pymysql的使用:
基本流程如下:
开始——>创建connection——>获取cursor——>执行查询、执行命令、获取数据、处理数据——>关闭cursor——>关闭connection——>结束
from matplotlib import pyplot as plt
plt.plot(x,y)
设置图片大小 fig=plt.figure(figuresize(20,8),dpi=80)
字体设置 my_font=font_manager.FontProperties (fname=“C:/Windows/Fonts/simsun.ttc”)
显示图片 plt.show()
保存图片 plt.savefig(‘保存地址’)
设置x的刻度 plt.xticks(x)
设置y刻度 plt.yticks(y)
添加描述信息 plt.xlabel(“时间”,fontproperties=my_font)
plt.ylabel(“温度,单位(·c)”,fontproperties=my_font)
plt.title(“10点到12点每分钟的气温变化情况”,fontproperties=my_font)
浅拷贝:copy.copy 拷贝对应数的id,拷贝列表内数字的id同时生成一个新的列表id,元组为不可变,所以无法拷贝
深拷贝: 如果拷贝的内容均为元组则不拷贝,如果内含有可变类型则拷贝生成一个新的id,深拷贝拷贝值
直方图:a=[数据]
d=组数
num_bines = (max(a)-min(a))//d 分组的宽度
#显示直方图
plt.hist(a,num_bins,normad=True)显示直方图并归一化
plt.xticks(range(min(a),max(a)+d,d)
plt.show()
numpy 的使用
round(数字,保留位数)
numpy读取数据
np.loadtxt(frame(文件路径),delimilter=" "(跳过某个符号或语句),dtype=np.float(指定文件类型为浮点型),skiprows=0,usecols=none(跳过某一行,使用某一列),unpack=False(转置))
转置:数组.transpose() 数组.T 数组.swapaxes(0,1)
取行:数组名[行号-1] 取多行:数组名[行号-1:]
取不连续的多行: 数组名[[行1,行2,行3,…]]
取列:数组名[:,列号-1] 取连续的多列: 数组名[:,列号-1:]
取不连续的多列:数组名[:,[列1,列2,…]]
取多个不相邻的点: 数组名[[行1,行2],[列1,列2]]
numpy修改数组的值
数组[数组<数值1]=数值2
np.where(数组<=(判断语句)数值,替换值1,替换值2)
clip修改值:数组.clip(小于t1则替换为t1,大于t2的则替换为t2)
数组的拼接:数值拼接:np.vstack(数组1,数组2)
水平拼接:np.hstack(数组1,数组2)
行列交换:数组[[行1,行2],:]=数组[[行2,行1],:] 行交换
数组[:,[列1,列2]]=数组[:,[列2,列1]] 列交换
创建一个对角数组:np.eye(数组大小)
求出一个矩阵每列的最大值的位置:np.argmax(数组,axis=0)
求一个矩阵每行的最大值的位置: np.argmax(数组,axis=1)
.rand(de,d1,…dn)创建d0-dn维度的均匀分布的随机数数组,浮点数,范围从0-1
.randn(de,d1.dn)创建d0-dn维度的标准正态分布随机数,浮点数,平均数0,标准差1
randint(low,high,从给定上下限范圈选取随机款整数,范围是low,high,形状是shape
(shape))
.uniform(low,high,(size))产生员有均匀分布的数组,low起始值,high结束值,size形状
.noral{loc,scale,从指定正态分布中随机抽取样本,分布中心是loc(概率分布的均值),标准差是scale,形状是size
.seed(s)随机款种子,s是给定的种子值。因为计算机生成的是伪随机数,所以通过设
定相同的随机数种子,可以每次生成相同的随机数
求和:t.sum(axis=NOne)
均值:t.mean(a,axis=None)
中值: np.median(t,axis=None)
最大值: t.max(axis=None)
最小值:t.min(axis=None)
极值:np.ptp(t.axis=None)
标准值:t.std(axis=None)
numpy能够处理数值,pandas除了处理数值之外,还能够帮助我们处理其他类型的数据。
pandas的使用:
import pandas as pd
创建数组
pd.Series(数组,index=list(“对应数组的索引”) #带标签的数组
DataFrame对象即有行索引,又有列索引
df=pd.DataFrame(data_list)
显示前几行:df.head() # 默认显示前5行
显示后几行:df.tail() # 默认显示后5行
显示信息 df.info() # 显示数据的信息
df.describe() #只能统计当前数据的中位数和索引
df.loc通过标签索引行数据
df.iloc通过位置获取行数据
处理缺失数据
判断数据是否为NaN:pd.isnull(df),pd.notnull(df)
处理方法1:删除NaN所在的行列dropna(axis=0,how=‘any’,inplace=False)
处理方法2:填充数据,t.fillna(t.mean()),t.fiallna(t.median()),t.fillna(0)
处理0的数据:t[t==0]=np.nan
当然并不是每次为0的数据都需要处理
当然平均值等情况,nan是不参与计算的,但0会
合并join:
join:默认情况下它是把行行索引相同的数据合并到一起
merge:按照指定的列把数据按照一定的方式合并到一起 默认合并方式inner交集 outer并集 left 以左边为准,NaN补全 right 以右边为准,NaN补全
分组:df.groupby(by=“字段”)
DataFrameGroupBy:1.可以遍历 2.调用聚合方法
count:分组中非NA值的数量
sum:非NA值的和
mean:非NA值的平均值
median:非NA值的算术中位数
std.var:无偏(分母n-1)标准差和方差
min.max:非NA值的最小值和最大值
多组分组:grouped=df.groupby(by=[df[“字段1”],df[“字段2”]])
period=pd.PeriodIndex(year=data[“year”],month=data[“month”],day=data[“day”],hour=data[“hour”],freq=“H”)
机器学习
数据集:kaggle:大数据竞赛平台、真实数据、数据量大
sciklit-learn:数据量较小 UCI:收录了360个数据集,覆盖各个领域
常用数据集的结构;
结构:特征值+目标值
重复值不需要去重
特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征过程,从而提高了对位置数据的预测准确性。
特征提取
1.实例化CountVectorizer(字典数据)
2.调动fit_transform方法输入数据并转化 注意返回格式
字典数据抽取:把字典中一些类别数据,分别进行转换成特征。
数组形式,有类别的这些特征先要转换成字典数据
One-hot编码
对文本数据进行特征值化 sklearn.feature_extraction.text.CountVectorizer
CountVectorizer()返回词频矩阵
CountVectorizer.fit_transform(x)x:文本或者包含文本字符串的可迭代对象
返回值:返回sparse矩阵
CountVectorizer.inverse_transform(x) x:array数组或者sparse矩阵
返回转换之前数据格式
CountVectorizer.get_feature_names()返回值:单词列表
统计所有文章中所有的词,重复的只看做一次
对每篇文章,在词的列表里面进行统计每个词出现的次数。
单个字母和汉子不统计:没有分类的依据
文本特征抽取概念:Count
jieba 分词: import jieba jieba.cut(“语句”) 返回值::词语生成器
Tf.term frequency:词的频率 出现的次数
文档频率inverse document frequency log(总文档数量/该词出现的数量)
TfidfVectorizer(stop_words=None,…)返回词的权重矩阵
TfidfVectorizer.fit_transform(x) x:文本或者包含文本字符串的可代表对象
返回值:返回sparse矩阵
TfidfVectorizer.inverse_transform(x) x:array数组或者sparse矩阵
返回值:转换之前数据的格式
TfidfVectorizer.get_feature_names() 返回值:单词列表
特征预处理 sklearn.preprocessing
数值型数据:标准缩放:(1)归一化(2)标准化 (3)缺失值
类别型数据:one-hot编码
时间类型:时间的切分
归一化:通过对原始数据进行变换吧数据映射到[0,1]之间
公式:x1=(x-min)/max-min x2=x1*(mx-mi)+mi max为一列的最大值,min为一列最小 值 x2为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0
MinMaxScalar(feature_range=(0,1)…)每个特征缩放给定范围(默认[0,1])
MinMaxScalar.fit_transform(x) x:numpy array格式的数据[n_samples,n_features]
返回值:转换后的形状相同的array
异常点对最大值和最小值影响最大,直接影响归一化的结果
归一化,易受异常点影响,鲁棒性较差,只适合传统精确小数据场景。
标准化:通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内,不易受异常点影响
x1=(x-mean)/sigma 作用于每一列,mean为平均值,sigma为标准差
var为方差,sigma=sqart(var)
sklearn.preprocessing.standardScaler 标准化
StandardScaler(…)处理之后每一列所有数据都聚集在均值为0附近标准差为1
StandardScaler.fit_transform(x) x:numpy array格式的数据[n_samples,n_features]
返回值:转换后的形状相同的array
StandardScaler.mean_ 原始数据中每列特征值的平均值
StandardScaler.std_ 原始数据每列特征值的标准差
如何处理数据中的缺失值
插补可以通过缺失值每行或者每列的平均值、中位数来填充。
sklearn.preprocessing.imputer
imputer(missing_values=‘NoN’,strategy=‘mean’,axis=0)完成缺失值插补
imputer.fit_transform(x) x:numpy array 格式数据[n_samples,n_features]
返回值:换行后的形状形同array
常见的处理缺失值的方法有:
(1)pandas:dropna、fillna 数据当中的缺失值:np.nan
(2)replace("?",np.nan)
数据降维之特征选择
降维:
维度:特征的数量
特征选择的原因:冗余;部分特征相关度高,容易消耗计算性能 噪声:部分特征对预测结果有影响
主要方法:(1)filter(过滤式):Variance Threshold
(2)Embedded(嵌入式):正则化、决策树
(3)Wrapper(包裹式)
sklearn.feature_selection.VarianceThreshold
VarianceThreshold(threshold=0.0)
过滤所有等于阈值的特征
Variance.fit_transform(x) x:numpy array格式数据[n_samples,n_features]
返回值:训练集差异低于阈值特征的将被过滤,默认值保留所有非零方差特征,集删除所有样本中具有相同的特征。
PCA:目的:是数据维数压缩,尽可能降低源数据的维数(复杂度),损失少量信息。
作用:可以削减回归分析或者聚类分析中特征的数量。
!!!如有看不懂的,请到隔壁博客网站自行询问解答。本站不回复任何评论。