excel文件数据为:

首先导入Pandas模块

import pandas as pd

读取excel文件

# 读取excel文件
file_01 = pd.read_excel("data.xls")
print(file_01, 'n')
print('数据维度为:', file_01.shape, 'n', 'file_01的类型为:', type(file_01))

返回结果

    Unnamed: 0                  时间  变量1  变量2  变量3  变量4  变量5    输出应变量
0            1 2021-07-21 00:00:00    1    0    1  1.0    1   94.354
1            2 2021-07-22 00:00:00    1    0    1  1.0    2  118.340
2            3 2021-07-23 00:00:00    1    0    1  1.0    3   93.791
3            4 2021-07-24 00:00:00    1    0    1  2.0    1   86.593
4            5 2021-07-25 17:55:00    1    0    1  2.0    2  100.280
5            6 2021-07-26 17:55:00    1    0    1  2.0    3   94.121
6            7 2021-07-27 17:55:00    1    0    1  3.0    1      NaN
7            8 2021-07-28 17:55:00    1    0    1  3.0    2  113.920
8            9 2021-07-29 17:55:00    1    0    1  3.0    3   95.566
9           10 2021-07-30 17:55:00    1    0    1  NaN    1  100.870
10          11 2021-07-31 17:55:00    1    0    1  4.0    2  116.130
11          12 2021-08-01 17:55:00    1    0    1  4.0    3  103.830
12          13 2021-08-02 17:55:00    1    0    1  4.0    2  124.870
13          14 2021-08-03 17:55:00    1    0    1  4.0    3   91.475
14          15 2021-08-04 17:55:00    1    0    2  4.0    1   52.083
15          16 2021-08-05 17:55:00    1    0    2  4.0    2   45.912
16          17 2021-08-06 17:55:00    1    0    2  4.0    3   48.534
17          18 2021-08-07 17:55:00    1    0    2  4.0    1   21.255
18          19 2021-08-08 17:55:00    1    0    2  4.0    2   32.191
19          20 2021-08-09 17:55:00    1    0    2  4.0    3   24.832 

数据维度为: (20, 8) 
 file_01的类型为: <class 'pandas.core.frame.DataFrame'>

可见返回file_01的类型为DataFrame类型,相当于一个表格表格中的缺失值用NaN来代替。

数据进行预处理需要判断数据是否重复和缺失,并对缺失的数据进行删去或者补充。

判断是否存在完全一致的数据行,可用duplicated函数 

# 判断是否存在重复的行,若存在重复的行,返回True,否则返回False
duplicated_data = file_01.duplicated()
print(duplicated_data)

如果需要去掉重复的行,可使用drop_duplicates()函数

# 去掉重复的行
# print(file_01.drop_duplicates())

如果需要输出一列去除重复值之后的数据,可使用unique()函数结果返回的是去重之后的数据

print(file_01['输出应变量'].unique())  # 返回去除重复值之后的变量
print(type(file_01['输出应变量']))

>>>
[ 94.354 118.34   93.791  86.593 100.28   94.121     nan 113.92   95.566
 100.87  116.13  103.83  124.87   91.475  52.083  45.912  48.534  21.255
  32.191  24.832]
<class 'pandas.core.series.Series'>

需要注意的是,此时的一列数据为series类型,需要与numpy中的列表list进行区分,numpy中的unique()函数作用也是输出去重之后的数据,但是输出结果顺序数字字符空值

import numpy as np
# 自定义一个list列表
lst = ['aa', np.nan, 9, 2, 1, 3, 5, 2, 'a', 'b', 'aa']
print(np.unique(lst))
print(type(lst))

>>>
['1' '2' '3' '5' '9' 'a' 'aa' 'b' 'nan']
<class 'list'>

判断是否有缺失值使用isnull()函数

""" 使用isnull()函数判断一行或者一列是否存在缺失值,
    可使用axis关键字指定axis=0为指定列变量;axis=1为指定行变量
    any()表示一行或者一列只要存在缺失值isnull函数就返回True,否则返回False"""

print(file_01.isnull().any(axis=0))

运行结果

# 返回结果
Unnamed: 0    False
时间            False
变量1           False
变量2           False
变量3           False
变量4            True
变量5           False
输出应变量          True
dtype: bool

丢弃缺失值使用dropna()函数

# axis指定行或者列
# how指定丢弃方式any指定只要有一行/列中个数据存在缺失,就丢弃/all所有都为空就丢弃
# subset可指定具体的列

file_02 = file_01.dropna(how='any', axis=0)
print(file_02)

丢弃结果

   Unnamed: 0                  时间  变量1  变量2  变量3  变量4  变量5    输出应变量
0            1 2021-07-21 00:00:00    1    0    1  1.0    1   94.354
1            2 2021-07-22 00:00:00    1    0    1  1.0    2  118.340
2            3 2021-07-23 00:00:00    1    0    1  1.0    3   93.791
3            4 2021-07-24 00:00:00    1    0    1  2.0    1   86.593
4            5 2021-07-25 17:55:00    1    0    1  2.0    2  100.280
5            6 2021-07-26 17:55:00    1    0    1  2.0    3   94.121
7            8 2021-07-28 17:55:00    1    0    1  3.0    2  113.920
8            9 2021-07-29 17:55:00    1    0    1  3.0    3   95.566
10          11 2021-07-31 17:55:00    1    0    1  4.0    2  116.130
11          12 2021-08-01 17:55:00    1    0    1  4.0    3  103.830
12          13 2021-08-02 17:55:00    1    0    1  4.0    2  124.870
13          14 2021-08-03 17:55:00    1    0    1  4.0    3   91.475
14          15 2021-08-04 17:55:00    1    0    2  4.0    1   52.083
15          16 2021-08-05 17:55:00    1    0    2  4.0    2   45.912
16          17 2021-08-06 17:55:00    1    0    2  4.0    3   48.534
17          18 2021-08-07 17:55:00    1    0    2  4.0    1   21.255
18          19 2021-08-08 17:55:00    1    0    2  4.0    2   32.191
19          20 2021-08-09 17:55:00    1    0    2  4.0    3   24.832

进行缺失值的填充,可使用fillna()函数中value进行指定,可指定数字字符串

# 缺失值的填充
file_03 = file_01.fillna(value=0)
print(file_03)

原文地址:https://blog.csdn.net/qq_44039983/article/details/123416594

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_27258.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注