一、多个Excel合并成1个Excel
▲图1:6年气象站点文件
▲图2:气象站点内容概要
如图,需要将6年的气象站点数据重新整理到一个Excel中。其中每个文件的内容如图2,要求合并时去除第一列,第二列这两个无用列。步骤代码如下:
1.构建文件列表和要读取的文件列名称
import os
import pandas as pd
file_dir = r'D:\公众号\Pandas基本操作'
#设置工作空间,默认读取的就是这个文件夹下的文件
#输出文件时,也是默认输出到本路径下
os.chdir(file_dir)
file_ls = os.listdir(file_dir) #设置文件列表
print(file_ls)
df = pd.read_csv(file_ls[0]) #读取文件列表第一个文件的全部数据
use_cols = df.columns[2:] #获取要读取的列名,因为有两列是无用列
print(use_cols)
输出结果:
['2015站点匹配.csv','2016站点匹配.csv','2017站点匹配.csv','2018站点匹配.csv','2019站点匹配.csv','2020站点匹配.csv']
Index(['time', 'pm2_5', 'aod', 'blh', 'sp', 't2m', 'rh', 'ndvi', 'dem', 'luc',
'ws', 'site', 'lon', 'lat'],
dtype='object')
2.迭代读取文件并拼接数据,输出数据至文件,代码如下:
df = pd.DataFrame(columns = use_cols) #构建一个空的DataFrame二维数组
for file in file_ls:
son_df = pd.read_csv(file, usecols = use_cols) #读取指定列的数据
#将两个DataFrame进行拼接,axis = 0表示在行方向拼接,ignore_index可以忽略两个DataFrame的索引
df = pd.concat([df, son_df], axis = 0, ignore_index = True)
df.to_excel(r'年份汇总.xlsx', index = False) #输出到文件,index参数可以忽略索引输出
print(df)
结果如图所示,一共98万余条数据,输出时电脑已卡死
二、按照条件删除若干行
以2015年数据为例,列‘pm2_5’表示一年中各个站点的pm2.5数值。假定大于600或小于10为异常值,需要删除,代码如下:
import numpy as np
df = pd.read_csv(file_ls[0], usecols = use_cols)
print(df.shape) #获取删除前的数据形状
del_index = df[(df['pm2_5'] > 600) | (df['pm2_5'] < 10)].index #获取满足条件的行索引
df.drop(del_index, inplace = True) #删除满足条件的行,inplace表示在源数据上删除,故没有返回值
print(df.shape) #输出删除后的数据形状
结果如下,可以看出输出前为148940行,输出后为145291行:
(148940, 14)` `(145291, 14)
同理,删除若干列需要用columns参数,这是因为drop默认删除行,如不加columns参数会找不到对应的行索引:
df.drop(columns = ['time', 'pm2_5'], inplace = True)
三、添加新列
假设我们为2015年添加一列,列名为’new_id’,但是只添加5行,代码如下:
new_id = [i for i in range(5)]``new_id = pd.Series(new_id)``df['new_id'] = new_id``print(df)
可以看出添加成功。pd.Series语法将列表转为Series格式,如果不转换,将会报错,提示行不匹配。
接下来将NaN值赋值为-1,有两个方法,代码如下:
df.loc[df[pd.isnull(df['new_id'])].index, 'new_id'] = -1 #方法1`` ``#方法2``new_col = df['new_id'].fillna('-1')``df['new_id'] = new_col
方法一利用pd.isnull判断某一列中为NaN的行,利用.index得到行索引。再利用df.loc对满足条件的列赋值。
方法二利用.fillna对某一列的NaN赋值为-1,得到的为Series对象。再利用列赋值语句将原来的列覆盖。结果如下:
以上就是在以前常使用的操作,总结下来就是数据的读取、筛选、合并、输出等环节。感谢阅读!
▍学习资源推荐
零基础Python学习资源介绍
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(学习教程文末领取哈)
👉Python必备开发工具👈
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取。