阿惠碎碎念:晕晕乎乎研究生阶段就已经过了大半年了,文献也没读多少。。。咸鱼呐!要改了。在有限的几次实验操作中,我发现用python对CSV文件执行操作还挺常用的。为了方便自己之后查阅,也方便大家参考,特来整理一下,有些我觉得自己说不清,就举例子啦~后续有新内容再补加。
整理的操作包括最基本的读取、保存、选择特定行或列、删除特定行或列、去掉重复数据等。可能存在不足,欢迎批评指正!
读取文件格式如下 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200224153707178.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU1NTQwOA==,size_16,color_FFFFFF,t_70)
读取文件数据/ pd.read_csv()
import pandas as pd
#pathname为文件存放位置及文件名称
pathname = 'E:\pycharm\GNRX\data\\train_1.csv'
#df数据类型为dataframe
df = pd.read_csv(pathname, encoding='gbk')
#显示读取的数据的前5行
print(df.head())
#显示读取的数据的前10行
print(df.head(10))
输出结果如图所示 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200224154328463.png)
去除输出结果中的省略号
pd.set_option('display.max_columns', 1000)
pd.set_option('display.width', 1000)
pd.set_option('display.max_colwidth', 1000)
读取文件前n行数据/nrows = 1000 以n=1000为例
df = pd.read_csv(pathname, nrows = 1000, encoding='gbk')
指定索引读取数据/index_col = u’时间’ 以时间为索引读取数据
df = pd.read_csv('E:\pycharm\GNRX\data\\train_1.csv', index_col = u'时间',encoding = 'gbk')
读取文件某一个或几个属性/df[‘风速’]、df[].id
import pandas as pd
df = pd.read_csv('E:\pycharm\GNRX\data\\train_1.csv' , encoding='gbk')
#读取“风速”这一列,df['风速']为dataframe类型
print(df['风速'])
#读取这些属性所代表的的列
df[['辐照度','风速','风向','温度','压强','湿度','小时']]
print(df[‘风速’])
输出结果如图所示 应用举例:以id为例
df[(df[col] < Q1-outlier_step2) | (df[col] > Q3+outlier_step2)].id
将某一属性的值存在一个list中/df[‘风速’].values 比如将所有风速数据存在一个list中
import pandas as pd
df = pd.read_csv('E:\pycharm\GNRX\data\\train_1.csv' , encoding='gbk')
print(df['风速'].values)
输出结果为 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200224175446131.png)
保存文件/df.to_csv
#filepath为文件保存的位置及文件名,是新创建的文件,不是在原文件上更改
#index=False的含义是保存时不增加新的索引列,没有这句话时新保存的文件会有一列新的索引序号
# sep=','表示使用,分隔需要保存的数据
df.to_csv(filepath, index=False, sep=',',encoding = 'gbk')
获取某一特征为特定取值的行的索引/df[…].index 如获取风速为-0.70754717的数据的索引
#index为Excel中从数据行开始计数的序号,从0开始计数
#比如风速= -0.70754717的索引为0,1......
df[(df['风速'] == -0.70754717 )].index
选择某一特征为特定取值的数据行/df.loc[…] 比如选择id等于1的数据
print(df.loc[df['id'] == 1])
输出结果为 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200224174618697.png)
其他用法举例:
for i in outlier_list:
#选择dataframe i 行,col列的值 ,df.loc[i,col]
time = df.loc[i,'时间']
#选取“辐照度”的第0-2行数据
df.loc[0:2,'辐照度']
tips = pd.read_csv('E:\pycharm\GNRX\data\\train_1.csv' , encoding='gbk')
#计算相关度
result = tips.corr()
print(result)
#只看实际功率与其他属性的相关度,以下两种写法均可
result1 = result.loc['实际功率']
result2 = result.loc['实际功率', :]
用loc指定某一行赋值
#利用索引index循环赋值, MAE_D为之前步骤计算出的数值
for index in dayindex:
df.loc[index,'MAE_D'] = MAE_D
选择特定的行或者列/iloc
# 选取第0-2列的整列数据
df.iloc[:, :2]
# 选取第2列的整列数据
df.iloc[:, 2]
#选取第3列的第0-2行数据
df.iloc[0:2,3]
应用举例:
for i in outlier_list:
df.iloc[:, col][i] = (df.iloc[:, col][i + 1] + df.iloc[:, col][i - 1]) / 2
对某一属性的数据整体做操作再赋值给该属性 比如风向数据整体-180
df['风向'] = (df['风向']-180)/180
删除特定行/ df.drop(index)
#删除索引为i的整行
df = df.drop(i)
#删除实际功率小于等于0的行
df = df.drop(index=df.loc[(df['实际功率'] |