六种数据类型
数字,字符串,列表,元组,字典,集合
x=1
str='abcd'
list=['a','b','c','d']
tuple=('a','b','c','d')
dic={'name':'Bob','age':1}
set={1,2,3,4}
数据类型 | 名称 |
---|---|
number | 数字 |
string | 字符串 |
list | 列表 |
tuple | 元组 |
dictionary | 字典 |
set | 集合 |
number(数字)中包含3种数值类型:
1.整型(int) 整型就是整数,包括正整数、负整数、零,不带小数点。
2.浮点型(float) 浮点型由整数部分与小数点组成,必须包含小数点。
3.布尔型(bool) 布尔型是一种表示逻辑值的简单类型,只有俩个值,一个为 True(真,1),另一个为False(假,0)。
————————————————
版权声明:本文为CSDN博主「仰天长啸你爹驾到」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2301_79844035/article/details/135087436
判断语句
if 语句
if 表达式:
循环体
if-else 语句
if 表达式
循环体
else
循环体
if-elif-else 语句
if 表达式
循环体
elif 表达式
循环体
else
循环体
九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print(f"{j}*{i}={j*i}",end=' ')
print("\n")
相互转换
函数 | 描述 |
---|---|
int(x) | 将x转换为一个整数 |
float(x) | 将x转换为一个浮点数 |
str(x/s) | 将x/s转换为字符串 |
eval(str) | 用于字符串,去除字符串的引号,获取引号里面的内容 |
list(s) | 将序列s转换为一个列表 |
tuple(s) | 将序列s转换为一个元组 |
set(s) | 将序列s转换为一个集合 |
dict(d) | 创建一个字典,d必须是一个(key,value)元组序列 |
循环语句
while 语句
while 表达式:
循环体
for 语句
for 循环变量 in 遍历对象(序列):
循环体
range函数
range(起始值,终止值,步长)
字符串
字符串的索引、切片与逆序
索引
H e l l o , w o r l d !
0 1 2 3 4 5 6 7 8 9 10 11 12
从0开始
切片
变量名[起始索引:结束索引+1:间隔个数]
逆序
变量名[结束索引:开始索引-1:-1]
字符串.upper()
将字符串里的字符全部大写
字符串.lower()
将字符串里的字符全部小写
字符串.isupper()
判断字符串中字符是否都是由大写字母组成
字符串.islower()
判断字符串中字符是否都是由小写字母组成
字符串.isdigit()
判断字符串中是否都是由数字组成
字符串.count(字符)
统计指定字符出现的次数
列表
操作 | 方法 | 描述 |
---|---|---|
增 | 列表.append(元素) | 在列表末尾添加一个元素 |
增 | 列表.extend(序列) | 在列表末尾追加一个序列 |
增 | 列表.insert(索引,元素) | 在列表对应的索引插入元素 |
删 | del 列表[索引] | 删除列表中对应索引的元素 |
删 | 列表.pop(索引) | 删除列表中对应索引的元素,并返回删除的元素,默认最后一个 |
删 | 列表.remove(元素) | 删除列表中对应元素的第一个匹配项 |
删 | 列表.clear() | 清空列表 |
改 | 列表[索引]=新元素 | 将列表对应索引的元素,修改为新元素 |
查 | 列表.index(元素) | 返回元素对应的索引 |
列表推导式
[表达式 for 变量 in 列表]
[表达式 for 变量 in 列表 if 条件]
len()
获取列表长度
元组
元组的值无法修改、添加或删除。
max() min()
返回元组中元素的最大,小值
count()
统计某个元素在元组中出现的次数
元组操作
index() | 从元组中找出某个对象第一个匹配项的下标位置。 |
count() | 统计某个元素在元组中出现的次数 |
len() | 计数元组元素的个数,并返回值 |
max() | 返回元组中元素的最大值 |
min() | 返回元组中元素的最小值 |
字典
操作 | 代码示范 | 描述 |
---|---|---|
访问值 | 字典序列[键] | 访问已知键所对应的值 |
修改值 | 字典序列[键]=新值 | 修改已知键的值 |
添加键值对 | 字典序列[新键]=新值 | 添加新的键值对 |
删 | del 字典序列[键] | 删除字典中对应的键的键值对 |
删 | del 字典序列 | 删除字典 |
删 | 字典序列.clear() | 清空字典 |
查 | 字典序列.items() | 查找字典的所有的键值对 |
查 | 字典序列.keys() | 查找字典的所有的key(键) |
查 | 字典序列.values() | 查找字典的所有的value(值) |
集合
集合序列.add(数据)
添加一个数据
集合序列.remove(数据)
删除集合中指定的数据
集合序列.pop()
随机删除集合中的元素
函数
def 函数名 ( ):
函数语句
return 返回值
形参和实参
def 函数名(形参1,形参2):
函数体
调用方式
函数名(实参1,实参2)
matploplit
创建画布
plt.figure(figsize = (a,b),dpi = )
figsize:指图像的长(a)宽(b) dpi:图像清晰度(越大越清晰)
添加自定义x,y刻度
plt.xticks(x,rotation=,fontsize=)
plt.yticks(y,rotation=,fontsize=)
x:要显示的刻度值 y:要显示的刻度值 rotation:旋转角度 fontsize:字体大小
设置x,y标签和标题
plt.xlabel( ,fontsize= )
plt.ylabel( ,fontsize= )
plt.title( ,fontsize= )
显示图像
plt.show()
中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
绘制图像
折线图
plt.plot(x,y.color = '',linestyle = '',marker = '',linestyle='',label='')
x:横轴数据
y:纵轴数据
color:图像颜色,可以直接输入英文名称,或者是RGB颜色值
linewidth:线条宽度
marker: 标记风格
linestyle: 线条样式
label:图例
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [2,3,4,5,6]
plt.plot(x,y)
plt.show()
散点图
plt.scatter(x,y)
柱状图
plt.bar(x,width=,height=,label=,alpha=,align=,color=)
x: 柱状图中的横坐标点
list height: 柱状图对应每个横坐标的高度值
width: 柱状图的宽度,默认值为0.8
label: 每个数据样本对应的label,后面调用legend()函数可以显示图例
alpha: 透明度
align:每个柱状图的对齐方法
color:选择柱状图的颜色
import matplotlib.pyplot as plt
x = [5,10,15,20,25,7,4,2,4,12,23,14,19,22,19,18,20,16]
y = [3,7,4,5,3,3,2.3,2.4,4.5,4.8,2.1,3,4.5,5.6,6.5,5.8,6.2,3.9]
plt.bar(x,y)
plt.show()
直方图
plt.hist(x,bins=None)
plt.hist(x,bins=None)
x:需要传递的数据
bins:组距
numpy
data.shape | 查看数组的维度(以元组的形式输出) |
data.ndim | 查看数组维数 |
data.size | 查看数组中的元素数量 |
data.itemsize | 查看一个数组元素的长度 |
data.dtype | 查看数组元素的类型 |
one = np.ones([index, columns]) #生成index行,columns列且所有元素都为1的数组
zero = np.zeros([index, columns]) #生成index行,columns列且所有元素都为0的数组
生成固定范围内的数组
np.linspace(start, stop, num, endpoint)
start:序列的起始值
stop:序列的结束值
num:要生成的等间隔样例数量,默认为50
endpoint:序列中是否包含stop值,默认为true
np.arange
np.arange(start,stop,step,dtype)
生成随机数组
np.random.randn(d0,d1,d2,……,dn)
np.random.normal(loc = 0.0,scale = 1.0,size = None)
np.random.standard_normal(size = None)
均匀分布
np.random.rand(d0,d1,d2,……,dn)
np.random.uniform(low = 0.0,high = 1.0,size = None)
np.random.randint(low, high = None,size = None,dtype = 'i')
形状修改
ndarray.reshape
ndarray.reshape(shape, order)
类型修改
ndarray.astype(type)
统计指标
方法 | 作用 |
---|---|
np.min(ndarray,axis) | 查询所有行或所有列的最小值 |
np.max(ndarray,axis) | 查询所有行或所有列的最大值 |
np.median(ndarray,axis) | 查询所有行或所有列的中位数 |
np.mean(ndarray,axis) | 查询所有行或所有列的平均值 |
np.std(ndarray,axis,dtype) | 查询所有行或所有列的标准差 |
np.var(ndarray,axis,dtype) | 查询所有行或所有列的方差 |
np.ardmax(ndarray) | 查询最大值的位置 |
np.ardmin(ndarray) | 查询最小值的位置 |
矩阵乘法
np.matmul | 矩阵与矩阵相乘(禁止出现矩阵与标量相乘) |
np.dot | 矩阵与矩阵和标量相乘皆可 |
pandas
DataFrame
pd.DataFrame(data = None,index = None,columns = None)
属性 | 作用 |
---|---|
dataframe.shape | 获取维度 |
dataframe.index | 获取行索引表 |
dataframe.columns | 获取列索引表 |
dataframe.values | 获取其中array的值 |
dataframe.T | 行列互换(转置) |
dataframe.head() | 默认获取前5行,其他行数自行添加 |
dataframe.tail() | 默认获取后5行,其他行数自行添加 |
dataframe.info | 获取每一列的非空元素个数 |
DataFrame索引
修改行列索引值
data.index = new_index data.columns = new_columns
修改索引值不能单个修改,必须整体修改
重设索引
dataframe.reset_index(drop = False)
设置新的下标索引 drop:默认为False,不删除原来索引,如果为True,删除原来索引值
以某列值设置为新的索引
dataframe.set_index(keys,drop = True)
keys:列索引命或者列索引名称的列表 drop:bool值默认为True,当做新的索引,删除原来的列
时间类型
data1 = pd.to_datetime(data)
4.10.4.1 统计函数
函数 | 作用 |
---|---|
sum | 获取总和 |
mean | 获取平均值 |
median | 获取中位数 |
min | 获取最小值 |
max | 获取最大值 |
mode | 获取众数 |
abs | 获取绝对值 |
prod | 获取累积 |
std | 获取标准差 |
var | 获取方差 |
idxmax | 获取最大值索引 |
idxmin | 获取最小值索引 |
pandas画图
种类 | 描述 |
---|---|
line | 折线图 |
bar | 条形图(竖直条状) |
bath | 条形图(水平条状) |
hist | 直方图 |
pie | 饼图 |
scatter | 散点图 |
csv
read_csv
pd.read_csv(filepath_or_buffer,sep = ',',usecols = None)
to_csv
dataframe.to_csv(path_or_buffer=None,sep = ',',columns = None,header = True,index = True,mode = 'w',encoding = None)
path_or_buf:文件路径
sep:分隔符,默认用','隔开
columns:选择需要的列索引
header:是否写进列索引值
index:是否写进行索引值
mode:'w':重写,'a':追加
高级数据处理
判断数据中是否包含NAN
方法 | 描述 |
---|---|
pd.isnull(dataframe) 或dataframe.isnull() | 有缺失值返回True,没有缺失值返回False |
pd.notnull(dataframe)或dataframe.isnull() | 没有缺失值返回True,有缺失值返回False |
删除存在缺失值的对象
dataframe.dropna(axis = 0)
缺失值没有使用NAN标记
dataframe.replace(to_replace = '?',value = np.nan)
合并
pd.concat([data1, data2], axis = 1)
决策树
模块sklearn.tree
sklearn中决策树的类都在”tree“这个模块之下。这个模块总共包含五个类:
一般步骤
from sklearn import tree #导入需要的模块
clf = tree.DecisionTreeClassifier() #实例化
clf = clf.fit(X_train,y_train) #用训练集数据训练模型
result = clf.score(X_test,y_test) #导入测试集,从接口中调用需要的信息
决策树使用技巧
1:决策树往往会过度拟合具有大量特征的数据, 高维空间中样本较少的树很可能会过度拟合。考虑执行降维(PCA, ICA,或特征选择) 让你的树有更好的机会找到有区别的特征。
2:树每增加一层填充树所需的样本数量会加倍。使用max_depth来控制 树的大小以防止过度拟合
3:使用 min_samples_split 或 min_samples_leaf 确保多个 样本通过控制哪些分裂将通知树中的每个决策 予以考虑。非常小的数字通常意味着树会过度拟合, 而大量的数据会阻止树学习数据。尝试 min_samples_leaf=5 作为初始值。如果样本量不同 很大程度上,浮点数可以用作这两个参数的百分比。 虽然 min_samples_split 可以创建任意小的叶子, min_samples_leaf 保证每个叶子都有最小尺寸,避免 回归问题中的低方差、过度拟合叶节点。为了 类别较少的分类,min_samples_leaf=1 通常是最好的 选择
随机深林
1集成算法概述
集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个模型,集成算法会考虑多个评估器的建模结果,汇总之后得到一个综合的结果,**以此来获取比单个模型更好的回归或分类表现**。多个模型集成成为的模型叫做集成评估器(ensemble estimator),组成集成评估器的每个模型都叫做基评估器(base estimator)。通常来说,有三类集成算法:装袋法(Bagging),提升法(Boosting)和stacking
![](https://i-blog.csdnimg.cn/blog_migrate/c030360d58e869c61fc3adc77072bb69.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2c4d3d86fe923c95a79f6a8f7bfbcbb9.png)
数据预处理与特征工程
![](https://i-blog.csdnimg.cn/blog_migrate/7a338db415036221e1a9072ee02ec4c0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/688606cf3d0ceca91831770f6b76a581.png)
preprocessing.LabelEncoder:标签专用,能够将分类转换为分类数值
preprocessing.OrdinalEncoder:特征专用,能够将分类特征转换为分类数值
![](https://i-blog.csdnimg.cn/blog_migrate/0e4063e1ebc16ec9f8bf5d64b67246f8.png)
二值化与分段
sklearn.preprocessing.Binarizer
preprocessing.KBinsDiscretizer
过滤法
嵌入法
降维算法
PCA与SVD