首页 > 其他分享 >【pandas小技巧】--读取多个文件

【pandas小技巧】--读取多个文件

时间:2023-07-19 22:14:17浏览次数:37  
标签:读取 -- df read pd csv pandas population

日常分析数据时,只有单一数据文件的情况其实很少见,更多的情况是,
我们从同一个数据来源定期或不定期的采集了很多数据文件;或者从不同的数据源采集多种不同格式的数据文件。

在这样的情况下,分析数据之前,需要将不同的数据集合并起来。
合并数据一般有两个维度,一是同构的数据集合并后行数增加;一是异构的数据集合并后列数增加。

1. 同构数据集

比如我们采集了3个不同年份的人口统计文件,分别为:

import pandas as pd

fp1 = "population1.csv"
df = pd.read_csv(fp1)
df

image.png

import pandas as pd

fp2 = "population2.csv"
df = pd.read_csv(fp2)
df

image.png

import pandas as pd

fp3 = "population3.csv"
df = pd.read_csv(fp3)
df

image.png

合并所有的数据集可以用 pd.concat 方法,不过一个一个文件读取之后再合并比较麻烦。
如果文件名称有规律的话(一般定期采集的数据集文件,文件名都有一定的规律),可以通过 glob 库(支持通配符匹配)来匹配所有数据文件。
然后利用python代码的灵活性一次合并所有的数据。

from glob import glob

files = sorted(glob("./population[1-3].csv"))
df = pd.concat((pd.read_csv(f) for f in files))
df

image.png

这样合并之后,发现索引是有重复的,如果要保持索引的唯一性,可以在合并时指定 ignore_index=True

df = pd.concat((pd.read_csv(f) for f in files), ignore_index=True)
df

image.png

2. 异构数据集

异构的数据集指数据结构不一样的数据,一般来自于不同的数据源。
比如:

import pandas as pd

fp1 = "population-total.csv"
df = pd.read_csv(fp1)
df

image.png

import pandas as pd

fp2 = "population-man.csv"
df = pd.read_csv(fp2)
df

image.png

import pandas as pd

fp3 = "population-woman.csv"
df = pd.read_csv(fp3)
df

image.png

合并的方式和前面按行合并类似,区别在于指定 axis=1

from glob import glob

files = sorted(glob("./population-*.csv"))
df = pd.concat((pd.read_csv(f) for f in files), axis=1)
df

image.png

合并之后发现有重复的列,对于重复的行,可以简单的通过 drop_duplicates()方法来去重,
去除重复的列则需要一些技巧。

df = df.loc[:, ~df.columns.duplicated()]
df

image.png
这样就去除了重复的列,完成了异构数据集的合并。

3. 附录

本篇使用的示例数据可以通过下面的url下载:

  1. population1.csv:http://databook.top:8888/pandas-tricks/population1.csv
  2. population2.csv:http://databook.top:8888/pandas-tricks/population2.csv
  3. population3.csv:http://databook.top:8888/pandas-tricks/population3.csv
  4. population-total.csv:http://databook.top:8888/pandas-tricks/population-total.csv
  5. population-man.csv:http://databook.top:8888/pandas-tricks/population-man.csv
  6. population-woman.csv:http://databook.top:8888/pandas-tricks/population-woman.csv

标签:读取,--,df,read,pd,csv,pandas,population
From: https://www.cnblogs.com/wang_yb/p/17566904.html

相关文章

  • canal报错nosuchmethod ..bytebuffer
    解决方法:更新jdk版本与es一致......
  • Spring
    Spring1.1简介Spring:春天----->给软件行业带来了春天。2002,首次推出了Spring框架是雏形,interface21框架。spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。RodJohnson,SpringFramework创始人,著名作者。spring理念:使现......
  • 2023夏季集训D1-贪心二分
    2023夏季集训D1贪心二分0x00前言24OIFXJ大佬来给我们讲课OrzOrz.讲课好难TAT.0x10贪心0x11经典贪心写了BestCowLineG/S和田忌赛马一位小伙从同学那里要来了一份BestCow代码Debug但没有发现代码没有输入,这是他思路3小时后发生的hack.田忌赛马太......
  • 函数式编程part2-Lambda表达式
    2.1概述Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。2.2核心原则可推导可省略2.3基本格式(参数列表)->{代码}......
  • WordPress数据表结构
    如果是一个普通的用户,不需要了解wordpress数据库的结构。但是,如果你正在写一个插件,你应该会对wordpress如何处理它的数据和关系感兴趣。如果你已经尝试使用已经存在的wordpressapi去访问你需要的数据,但不直接访问数据库的情况下,这是不可能的,WordPress的提供WPDB的类,使这项任务变......
  • CSS
    目录css介绍css语法css引入方式选择器基本选择器组合选择器属性选择器分组和嵌套伪类选择器伪元素选择器选择器的优先级CSS属性相关宽和高字体属性背景属性边框display属性CSS盒子模型css介绍css介绍:当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染)。css实......
  • 在英特尔 CPU 上微调 Stable Diffusion 模型
    扩散模型能够根据文本提示生成逼真的图像,这种能力促进了生成式人工智能的普及。人们已经开始把这些模型用在包括数据合成及内容创建在内的多个应用领域。HuggingFaceHub包含超过5千个预训练的文生图模型。这些模型与Diffusers库结合使用,使得构建图像生成工作流或者对不......
  • python解释器安装:
     python3.8安装下载python软件wgethttps://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz 创建目录mkdir-p/usr/local/python3解压tar-zxvfPython-3.8.2.tgzyuminstall gcc-yyum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlit......
  • 「学习笔记」自动机家族
    OI中所说的「自动机」一般都指「确定有限状态自动机」。一个确定有限状态自动机(DFA)由以下五部分构成:字符集(\(\Sigma\)),该自动机只能输入这些字符。状态集合(\(Q\))。如果把一个DFA看成一张有向图,那么DFA中的状态就相当于图上的顶点。起始状态(\(start\)),\(start\inQ\),是一......
  • 代码管理工具git的使用
    1.git概述git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。2. git工作流程图工作流程图如图所示,黄色部分为工作区,index为暂存区,Repository为......