在数学建模中我常常使用pandasnumpy这两个库进行数据的处理

接下来我会列举pandas库的常用操作

导入pandas库

1
import pandas as pd

1.导入数据

常用的导入数据函数有

  • pd.read_excel(“File Name”,”Sheet Name”,”Header”)
  • pd.read_csv(“File Name”,”Header”)

返回值均为DataFrame

举例

1
2
3
4
df = pd.read_excel("./static/test.excel",sheet_name="工作表1",header=1)
# 读取当前py文件目录下 static文件夹 内的test.excel文件
# 读取的工作表名称为 工作表1
# 以索引1的行作为列名 (索引1是第二行这里为了方便理解1的含义所以说成索引)
1
2
3
df = pd.read_csv("./static/test.csv",header=1)
# 读取当前py文件目录下 static文件夹 内的test.csv文件
# 以索引1的行作为列名 (索引1是第二行这里为了方便理解1的含义所以说成索引)

2.数据缺失值的处理

一般来说数据并不是完美的,会有一定的缺失

我们分为两步走处理数据的缺失

  1. 找出缺失值
  2. 填补缺失值

找出缺失值

对于一个Data Frame(以下简称df)

head()和tail()

在第一次读取文件的时候可能会读取到无效的单元格(数据)

我们可以使用

  • head(number)
  • tail(number)

number为读取的行数

  • head(7)意为从开头开始向下读取7行
  • tail(7)意为从结尾开始向上读取7行

如果没有提供number,那么默认number=5

举例

使用head和tail函数读取数据

可以看出最后两行数据是无效的

我们可以使用

1
DE = DE.iloc[:-2,:].copy()

处理后的DE

下面简单说明iloc

iloc[num1:num2,num3:num4]

  • i$\rightarrow$index [索引]
  • loc$\rightarrow$locate [定位]
  • num1 和 num2对应到行
  • num3 和 num4对应到列

举例

num1:num2意为取索引为num1到num2 - 1的所有行(num2不会被取到)

行的1:2

列也是同理

列的1:2

num如果不给就是取一个范围

info()和types()

可以调用info(),types()去查看各列的类型

举例

1