1.在读取数据
我们在通过pandas读取数据的时候,可以选择的读取方式有很多种,这里提几点技巧。
import pandas as pd
df = pd.read_csv('../data/XXX.csv',sep='\t',nrows = 100)
1.1 在设置路径的时候,注意使用的斜杠方向,同时推荐一种写法如下
df = pd.read_csv(r'C:\Users\12810\Desktop\temp\XXX.csv',sep='\t',nrows = 100) # 前面一个正则‘r’,不用修改斜杠方向
1.2 设置一个只读取100个样本,对于初步写代码的时候加速运行有很大的帮助。
2.如何在数据框新增一列
df['new_col'] = XX # 加列的数据
3.apply与lambda函数的混合使用
df.apply(lambda x: x.split(','))
# 更多zip()、map()、lambda()连用请参照:
# https://blog.csdn.net/HG0724/article/details/117374802
4.‘_’定义变量有什么用
按照习惯,有时候单个独立下划线是用作一个名字,来表示某个变量是临时的或无关紧要的。·
for _ in range(10):
print('我是:',_)
我是: 0
我是: 1
我是: 2
我是: 3
我是: 4
我是: 5
我是: 6
我是: 7
我是: 8
我是: 9
5.统计一列数据的元素频率并用直方图表示
df['label'].value_counts().plot(kind='bar')
用于在数据分析中,找出某一列的数据中,元素的个数是多少,并可视化,很实用。
6.Counter模块的介绍
from collections import Counter # 一个计数器模块
参考:https://blog.csdn.net/ch_improve/article/details/89388389
# 统计字符个数
str_1 = 'wdqdqwdqwqwd11dq2wd'
count_result = Counter(str_1) #
print(count_result)
Counter({'d': 6, 'w': 5, 'q': 5, '1': 2, '2': 1})
count_result.most_common(3)
[('d', 6), ('w', 5), ('q', 5)]
7.在导入测试集训练集数据后,一般的顺序打乱操作
from sklearn.utils import shuffle
dataset = shuffle(dataset)
打乱的数据,避免原数据有一定的规律性,比如连续型数据的做回归的时间惯性。
8.对于数据中某一列元素是字符串处理【编码】
8.1 One hot 编码
import pandas as pd
x = pd.get_dummies(x,columns=['列名'])
如果改特征的元素(类别过多的话)会引起维度灾难
比如:X[‘A’] 它的元素分别是**[‘校长’,‘书记’,‘主任’,‘助教’]**会新增4列数据,且以0-1表示
但是如果
[‘校长’,‘书记’,‘主任’,‘助教’,‘副校长’,(还有1000个-),] 那会有新增很多列!!!
换一个编码方式
8.2 LabelEncoder
from sklearn.preprocessing import LabelEncoder
label = LabelEncoder() # 实例化
X['A'] = label.fit_transform(X['A'])
相比第一种方式,较长的名义型数据,当然比如像性别 年龄分段 等也可以使用。
编码的方式还有很多。
9.数据归一化
数据归一化方式很多种,主要目的是消除量纲,大部分情况下可能对模型训练带来一定的好处。
stander = StandardScaler() # 实例化
X = stander.fit_transform(X)
# 补充
np.mean(df[:,0]) # 计算列均值
np.std(df[:,0]) # 计算列方差
# 数据划分
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X, y, test_size=0.3, random_state=1000)
10.获取当前时间
import datetime,time
# 获取当前时间并编码为年月日-小时分钟秒
datetime.datetime.now().strftime('%Y%m%d-%H%m%s')
# 计算程序运行时间
import time
start = time.clock()
#当中是你的程序
elapsed = (time.clock() - start)
print('Time used:',elapsed)
11.自编函数进行混淆矩阵计算
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns
def plot_confusion(label,matrix_c):
plt.figure(figsize=(10,8))
df_c = pd.DataFrame(matrix_c,index=label,columns=label)
mp = sns.heatmap(df_c,annot=True,fmt='d')
plt.xlabel('True')
plt.ylabel('False')
plt.show()
if __name__ == '__main__':
label = ['0','1']
matrix_c = np.array([[11,12],[13,14]])
plot_confusion(label,matrix_c)
12.图片处理库
from imutils import build_montages
# 在深度学习的Opencv里面,展示图片的时候,建议用
montages=build_montages(data,(144,196),(3,4))
for montage in montages:
cv.imshow('montage',montage)
cv.waitKey(0)
# build_montages(image_list,image_shape,montage_shape)
# image_list:要加载图片列表
# image_shape:设置图片的大小,参数类型是元组(w,h),参数为空,则montage全部都被黑色填充。
# montage_shape:参数类型也是元组类型定义了一个montage可以展示多少个的图片。如(3,4)表示
# 一个montage可以容纳12张图片,形状为3行4列。一次性加载图片数量,超过一个montage所能容纳
# 的图片数量,就会重新创建一个新的montage,其余的都是用黑色填充。上面的例子就展示了。
13.常见pycharm看别人的代码运行时,又这么一段代码
parser.add_argument(XXXXXX)
表明需要 使用终端(cmd)运行
命令比如:
01_mnist_AZ % python train.py --AZ A-Z.csv --save-model model.h5
01_mnist_AZ
文件路径python
编译语言train.py
运行脚本--AZ
导入数据的命令A-Z.csv
导入数据文件--save-model
保存文件的命令model.h5
保存模型的名字
14.常见的合并
import numpy as np
A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])
print(A)
print('*'*30)
print(B)
# 垂直合并
C_vstack = np.vstack([A,B])
# 水平合并
C_hstack = np.hstack([A,B])
print('*'*30)
print(C_vstack)
print('*'*30)
print(C_hstack)
[[1 2]
[3 4]]
******************************
[[5 6]
[7 8]]
******************************
[[1 2]
[3 4]
[5 6]
[7 8]]
******************************
[[1 2 5 6]
[3 4 7 8]]
Process finished with exit code 0