【python数据分析】Pandas数据载入

news2025/1/20 6:00:40

在这里插入图片描述

🙋‍ 哈喽大家好,本次是python数据分析、挖掘与可视化专栏第五期
⭐本期内容:Pandas数据载入
🏆系列专栏:Python数据分析、挖掘与可视化
👍“总有一段时光悄悄过去然后永远怀念.”


文章目录

  • 前言
  • 一、数据载入
    • 1.文本文件读取
    • 2. read_table和read_csv常用参数及其说明
    • 3.使用read _csv 函数读取CSV文件。。
    • 4.文本文件的存储
    • 5.Excel文件的读取
    • 6. Pandas读写Excel文件
    • 7.读取excel文件
    • 8.Excel文件的存储
  • 二、合并数据
    • 1.merge数据合并
      • 1.1. merge方法主要参数及说明
      • 1.2. merge的默认合并数据
      • 1.3指定合并时的列名
      • 1.4.merge合并方式、inner内连接、返回交集
    • 2. concat数据连接
      • 2.1.两个Series 的数据连接
      • 2.2两个DataFrame的数据
      • 2.3指定索引顺序
    • 3.combine_first合并数据
  • 总结


前言

对于数据分析而言,数据大部分来源于外部数据,如常用的CSV文件、Excel文件和数据库文件等。Pandas库将外部数据转换为DataFrame数据格式,处理完成后再存储到相应的外部文件中。
Pandas 常用的导入格式:import pandas as pd


一、数据载入

1.文本文件读取

文本文件是一种由若干行字符构成的计算机文件,它是一种典型的顺序文件。
txt文件:是Windows操作系统上附带的一种文本格式,文件以.txt为后缀。
Pandas中使用read_table来读取文本文件:

    pandas.read_table(filepath_or_buffer, sep=’\t’, header=’infer’, names=None, index_col=None, dtype=None, engine=None, nrows=None) 

CSV文件:是Comma-Separated Values的缩写,用半角逗号(’,’)作为字段值的分隔符。
Pandas中使用read_csv函数来读取CSV文件:

    pandas.read_csv(filepath_or_buffer, sep=’,’, header=’infer’, names=None, index_col=None, dtype=None, engine=None, nrows=None) 

2. read_table和read_csv常用参数及其说明

参数名称说明
filepath接收string,代表文件路径,无默认
sep接收string,代表分隔符。read_csv默认为“,”,read_table默认为制表符“\t”,如果分隔符指定错误,在读取数据的时候,每一行数据将连成一片
header接收int或sequence,表示将某行数据作为列名,默认为infer,表示自动识别
names接收array,表示列名,默认为None
index_col接收int、sequence或False,表示索引列的位置,取值为sequence则代表多重索引,默认为None
dtypel接收dict,代表写入的数据类型(列名为key,数据格式为values),默认为None
engine接收c或者python,代表数据解析引擎,默认为c
nrows接收int,表示读取前n行,默认为None

3.使用read _csv 函数读取CSV文件。。

代码如下(示例):

dfl = pd. read_ _csv (‘文件路径文件名’)#读取CSV文件到DataFrame中.
df2= pd. read_ _able (‘文件路径文件名’, sep=',')#使用read_ table,并指定分隔符
df3= pd. read _csv (‘文件路径文件名’,names=['a','b,--])#文件不包含表头行,允许自动分配默认列名,也可以指定列名。

name:表示数据读进来之后的数据列的列名

4.文本文件的存储

文本文件的存储和读取类似,结构化数据可以通过pandas中的to_csv函数实现以CSV文件格式存储文件。

DataFrame.to_csv(path_or_buf = None, sep =,, na_rep, columns=None, header=True, index=True, index_label=None, mode=’w’, encoding=None) 

5.Excel文件的读取

Pandas提供了read_excel函数读取“xls”和“xlsx”两种excel文件,其格式为:

pandas.read_excel(io, sheetname, header=0, index_col=None, names=None, dtype)

read_excel函数和read_table函数的部分参数相同

6. Pandas读写Excel文件

参数名称说明
io接收string,表示文件路径,无默认
sheetname接收string、int,代表excel表内数据的分表位置,默认为0
header接收int或sequence,表示将某行数据作为列名,默认为infer,表示自动识别
names接收int、sequence或者False,表示索引列的位置,取值为sequence则代表多重索引,默认为None
index_col接收int、sequence或False,表示索引列的位置,取值为sequence则代表多重索引,默认为None
dtypel接收dict,代表写入的数据类型(列名为key,数据格式为values),默认为None

7.读取excel文件

xIsx = pd.excelFile('example/ex1 .xlsx')
pd.read_excel(xlsx, 'Sheetl')
#也可以直接利用:
frame= pd.read_ _excel('example/ex1.xlsx', 'Sheet1')

8.Excel文件的存储

将文件存储为Excel文件,可使用to_excel方法。其语法格式如下:

DataFrame.to_excel(excel_writer=None, sheetname=None, na_rep=, header=True, index=True, index_label=None, mode=’w’, encoding=None)

to_csv方法的常用参数基本一致,区别之处在于指定存储文件的文件路径参数excel_writer,增加了一个sheetnames参数,用来指定存储的Excel sheet的名称,默认为sheet1。

二、合并数据

在实际的数据分析中,对同一分析对象,可能有不同的数据来源,因此,需要对数据进行合并处理。

1.merge数据合并

· merge·函数是通过一个或多个键将两个DataFrame按行合并起来,Pandas中的数据合并merge( )函数格式如下:

merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

1.1. merge方法主要参数及说明

参数使用说明
left参与合并的左侧DataFrame
right参与合并的右侧DataFrame
how连接方法:inner,left,right,outer(交、左、右、并)
on用于连接的列名(默认为相同的列名)
left_on左侧DataFrame中用于连接键的列
right_on右侧DataFrame中用于连接键的列
left_index左侧DataFrame中行索引作为连接键
right_index右侧DataFrame中行索引作为连接键
sort合并后会对数据排序,默认为True
suffixes修改重复名

1.2. merge的默认合并数据

price = pd.DataFrame( {'fruit':['apple','grape','orange','orange'],'price':[8,7,9,11]})
amount = pd.DataFrame( {'fruit':['aple','grape','orange'],'amout':[5,11,8]})
display(price,amount,pd.merge(price,amount))

在这里插入图片描述
两个DataFrame都有fruit列,所以默认按照该列进行合并,默认how=‘inner’,即pd.merge(amount,price,on=‘fruit’ ,how=‘inner’)如果两个DataFrame的列名不相同,可以单独指定。

1.3指定合并时的列名

display(pd.merge(price,amount,left_on = 'fruit',right_on = 'fruit'))

在这里插入图片描述

merge合并时默认是内连接(inner),即返回交集。通过how参数可以选择连接方法:左连接(left),右连接(right)和外连接(outer)。

1.4.merge合并方式、inner内连接、返回交集

### 1.5.merge通
过多个键合并

left = pd.DataFrame({'key1':['one','one','two'],'key2':['a','b','a'],'value1':range(3)})
right = pd.DataFrame({'key1':['one','one','two','two'],'key2':['a','a','a','b'],'value2':range(4)})
display(left,right,pd.merge(left,right,on = ['key1','key2'],how = 'left'))

在这里插入图片描述

在合并时会出现重复列名,虽然可以人为进行重复列名的修改,但merge函数提供了suffixes用于处理该问题。

print(pd.merge(left,right,on = 'key1’))
print(pd.merge(left,right,on = 'key1',suffixes = ('_left','_right')))

在这里插入图片描述

2. concat数据连接

如果要合并的DataFrame之间没有连接键,就无法使用merge方法。
pandas中的concat方法可以实现,默认情况下会按行的方向堆叠数据。如果在列向上连接设置axies = 1即可。

2.1.两个Series 的数据连接

s1 = pd.Series([0,1],index = ['a','b'])
s2 = pd.Series([2,3,4],index = ['a','d','e'])
s3 = pd.Series([5,6],index = ['f','g'])
print(pd.concat([s1,s2,s3]))

在这里插入图片描述

2.2两个DataFrame的数据

datal = pd.DataFrame(np.arange(6).reshape(2,3),columns = lit('abc'))
data2 = pd.DataFrame(np.arange(20,26).reshape(2,3),columns = list('ayz'))
data = pd.concat([data1,data2],axis = 0)
display(datal ,data2,data)

在这里插入图片描述

可以看出,contact连接方式默认为outer外连接通过join参数,
可以指定连接方式:inner or outer直接contact之后,index只是重复;
使用data = data.reset_index(drop=True)来改变index,修改为默认序列

2.3指定索引顺序

s1 = pd.Series([0,1],index = ['a','b'])
s2 = pd.Series([2,3,4],index = ['a','d','e'])
s3 = pd.Series([5,6],index = ['f','g'])
s4 = pd.concat([s1*5,s3],sort=False)
s5 = pd.concat([s1 ,s4],axis =1,sort=False)
s6 = pd.concat([s1 ,s4],axis =1,join = 'inner',sort=False)
display(s4,s5,s6)

在这里插入图片描述

3.combine_first合并数据

在处理数据的过程中,当一个DataFrame对象中出现了缺失数据,而对于这些缺失数据,我们希望可以使用其他DataFrame对象中的数据填充,此时需要使用combine_first方法。

combine_first()方法的语法格式: combine_first(other)
上述方法中只有一个参数other,该参数用于接收填充缺失值的DataFrame对象。
在这里插入图片描述

总结

以上就是今天的学习内容啦~
如果有兴趣的话可以订阅专栏,持续更新呢~
咱们下期再见~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/522991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

fusion app 网页远程控制app

拥有此网页,即可。远程控制软件里面的公告更新以及其他内容。 网页并无联系方式,请自己摸索。 从此即可摆脱, QQ收藏,微云,讯飞语记的束缚! 使用本程序网站放再多的内容都不会乱码! FA2和1都可…

代码随想录算法训练营第四天|24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点 、面试题 02.07. 链表相交 、142.环形链表II

两两交换链表中的节点 题目链接:力扣 解题思路:虚拟头节点,然后进行模拟即可。 我拿到这道题的时候,其实交换的思路是有的,但是首先没有设虚拟节点,这使得我的解答很乱,有很多if条件判断。其次…

Eclipse中如何使用:Maven、Git、GitHub、码云

第1章 在Eclipse 中使用 Maven 1.1 安装 Maven 核心程序 1)下载地址:http://maven.apache.org/ 2)检查 JAVA_HOME 环境变量。Maven 是使用 Java 开发的,所以必须知道当前系统环境中 JDK 的安装目录。 即:安装jdk目录中bin目录的上一级目录…

基于ESP32的单通道LoRaWAN网关设计资料介绍-操作模式

资料下载链接》》 介绍 这是在由ESP8266/ESP32 mcu和sx1276无线电组成的平台上实现LoRa网关功能的第6代软件。与旧版本的网关不同,此版本将在单一频率上收听所有可用的扩频因子 (SF)。网关使用 Web 功能(通过 Intranet)启用网关的监控和配置…

桂院导航小程序 云开发项目 二次开发教程

Gitee代码仓库:桂院导航小程序 GitHub代码仓库:GLU-Guide​​​​​​​ 演示视频 桂院校园导航小程序 演示视频 先 假装 大伙都成功安装了云开发项目,并能在 微信开发者工具 和 手机 上正确运行。 接着就是 将项目 改成自己的学校。 代码…

Redis性能测试怎么做?看看字节8年测试工程师写的测试总结

最近测试服务端的时候,接触到了redis,之前也看过,但不系统,借着这次实践,记录一下 01、简介 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构…

【Linux】第一个驱动程序,hello world!开启驱动之旅

目录 前言: 一、背景 二、驱动程序编写流程 1.APP打开的文件在内核中如何表示? 2.编写驱动程序的流程 三、hello驱动程序实战 hello_drive.c hello_drive_test.c 最终测试: a.首先编译内核(如果没有编译过&#xff09…

Makefile 与 docker 进行多服务 一次性构建

本机多服务一次性构建背景 本机开发多个服务,每个服务还会互相调用正常情况,开发者需要在本地启动多个服务,并且手动调用想着不使用gitlab ci/cd, 在本机快速通过 makefiledocker-compose 编排多个服务可执行源码在:https://github.com/webws/go-moda/tree/main/example/traci…

使用Segment Anything(SAM)模型进行自动标注

1.下载项目 项目1:https://github.com/zhouayi/SAM-Tool 项目2:https://github.com/facebookresearch/segment-anything git clone https://github.com/zhouayi/SAM-Tool.gitgit clone https://github.com/facebookresearch/segment-anything.git cd …

Nginx之正向代理与反向代理

1.什么是代理 打工人张三最近换了新工作,原来的住房离公司的路程太远,于是乎想要重新找一个离工作地不那么远的住房,由于工作繁忙,没有时间看房。 房东王五名下有2套住房,一套自己住,另一套想租出去&…

shell脚本----sed命令

文章目录 一、sed的工作流程二、sed的操作三、Sed命令使用3.1打印内容3.2删除行3.3替换3.4插入3.5分组调用 一、sed的工作流程 sed概述 sed编辑器时一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理…

(转载)从0开始学matlab(第3天)—多维数组

正如我们所看到的,MATLAB 的数组可能是一维或多维的。一维的数组可以形象地看作一系列的数垂直地罗列起来,用一个下标就可以调用数组中的元素(如图 a)。这样的数组适用于一个变量的函数,例如在规定的时间间隔后一系列…

C语言实战 - 贪吃蛇(图像界面)

由于本人精力有限,暂时先把素材和代码放上,等以后有空再补教程。 目录 效果预览 准备工作 EasyX图形库 音频素材 代码编写 Transfer.h文件 game.cpp文件 main.c文件 效果预览 先来看一下最终成品效果 贪吃蛇图形界面 准备工作 EasyX图形库 这…

Stable Diffusion云端部署只需三步, 不吃电脑配置, 模型快速部署

牙叔教程 简单易懂 我是小白, 小白跟我一步一步做就可以了, 鼠标点两下就OK了, 学点新东西, 好吗? 不想学的就走吧, 离我远点. Stable Diffusion是什么 Stable diffusion是一个基于Latent Diffusion Models(潜在扩散模型,LDMs)的文图生成…

瑞吉外卖 - 后台系统登陆功能(3)

某马瑞吉外卖单体架构项目完整开发文档,基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成,有需要的胖友记得一键三连,关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料:https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

Baumer工业相机堡盟工业相机IO介绍与配置

Baumer工业相机堡盟工业相机IO介绍与配置 Baumer工业相机Baumer工业相机IO的作用Baumer工业相机IO的作用Baumer工业相机IO上点连 Baumer工业相机 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运…

Android基础复习:Service组件详解

Android基础复习:Service组件详解 概况 Service组件是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。此外,组件可通过绑定到服务与之进…

【动手学深度学习】现代卷积神经网络汇总

文章目录 1 LeNet2 AlexNet3 VGG4 NiN5 GoogLeNet6 ResNet7 DenseNet 本文为作者阅读学习李沐老师《动手学深度学习》一书的阶段性读书总结,原书地址为:Dive into Deep Learning。 1 LeNet 网络结构 实现代码 net nn.Sequential(nn.Conv2d(1, 6, kern…

springboot+vue社区医院管理服务系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的社区医院管理服务系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者&#xff1…

从C出发 32 --- 自定义数据类型(上)

字节 指的就是 byte , 而一个 byte 占用 8 位, 在 C 语言里面有没有 直接提供 表示 8 位的数据类型? char 最小的整型,就可以表示 8 位的数据类型 char 的取值范围 -128 - 127 一个字节的取值范围是 0 - 25…