在数模模拟题中做过一些简单的数据处理,为了方便以后使用,做了一下记录,仅供本人学习使用
一、数据的读取
1.利用pandas读取数据
import pandas as pd
f=open('F:/数学建模/学习资料/数模第一次模拟/A题 钢水脱氧合金化配料方案的优化/处理文件/附件1.csv')
data=pd.read_csv(f)
2.利用iloc[]函数提取数据的前45列
head()读取数据的前5行
data=data.iloc[:,:45]
data.head()
结果:
二、数据的基本信息
1.shape()函数查看数据的维度:
data.shape
结果:(1716,45)
2.describe()函数查看数据的基本信息
data.describe()
3.columns.tolist()函数将数据中的列名称转换为列表
col_name=df_new5.columns.tolist()
col_name
insert()函数向列表添加新元素
#在第0个元素前添加‘C收得率’
col_name.insert(0,'C收得率')
col_name
reindex()函数将数据重新更改索引,内容用NaN填充
df_new6=df_new5.reindex(columns=col_name)
df_new6
三、数据的空值处理
1. pd.isnull()用来判断 ,数据中某列数据是否有空值,如果有空值返回True,否则返回False。
#连铸正样C的空值占比
c_ratio = len(data[pd.isnull(data['连铸正样C'])])/len(data)
c_ratio
2.df.dropna(axis=0,how=’any’,thresh=None,subset=None,inplace=False)删除空值
参数:
axis: 默认axis=0。0为按行删除,1为按列删除
how: 默认 ‘any’。 ‘any’指带缺失值的所有行/列;'all’指清除一整行/列都是缺失值的行/列
thresh: int,保留含有int个非nan值的行
subset: 删除特定列中包含缺失值的行或列
inplace: 默认False,即筛选后的数据存为副本,True表示直接在原数据上更改
#删除连铸正样C中的空值
data=data.dropna(axis=0,subset=['连铸正样C'])
data.shape
结果:(810,45)
3.drop()函数删除指定的数据
iterrows()函数是dataframe的遍历函数,一般与for循环搭配使用
#删除第4列即转炉终Mn为0的数据
#i表示索引,row表示该索引的行的内容;
#利用列表将row[4]为0的行数记录下来,再利用drop函数删除。
m=[]
for i, row in data.iterrows():
if row[4] == 0:
m.append(i)
data=data.drop(m)
data.shape
结果:(755,45)
还会再补充的!