在数据分析时候的一些小技巧-基于python

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wency(王斯-CUEB)

我不是要饭的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值