赞
踩
如图,需要将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 web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。带你从零基础系统性的学好Python!
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
工欲善其事,必先利其器。学习Python常用的开发软件都在这里了!
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。这份资料也包含在内的哈~
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
上述完整版Python全套学习资料已经上传CSDN官方,需要的小伙伴可自行微信扫描下方CSDN官方认证二维码免费领取!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。