pandas--->CSV / JSON
csv
CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。
CSV 是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。Pandas 可以很方便的处理 CSV 文件,本文以 nba.csv 为例,你可以下载 nba.csv 或打开 nba.csv 查看。
实例1
import pandas as pddf = pd.read_csv('nba.csv')print(df)
to_string()
to_string() 用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 ... 代替。
import pandas as pddf = pd.read_csv('nba.csv')print(df.to_string())
to_csv()
我们也可以使用 to_csv() 方法将 DataFrame 存储为 csv 文件:
import pandas as pd # 三个字段 name, site, age
nme = ["Google", "Runoob", "Taobao", "Wiki"]
st = ["www.google.com", "www.runoob.com", "www.taobao.com", "www.wikipedia.org"]
ag = [90, 40, 80, 98]# 字典
dict = {'name': nme, 'site': st, 'age': ag} df = pd.DataFrame(dict)# 保存 dataframe
df.to_csv('site.csv')
数据处理
head()
head( n ) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行。
import pandas as pddf = pd.read_csv('nba.csv')print(df.head())
tail()
tail( n ) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。
import pandas as pddf = pd.read_csv('nba.csv')print(df.tail())
info()
info() 方法返回表格的一些基本信息:
import pandas as pddf = pd.read_csv('nba.csv')print(df.info())
输出结果为:

json
JSON(JavaScript Object Notation,JavaScript 对象表示法),是存储和交换文本信息的语法,类似 XML。
JSON 比 XML 更小、更快,更易解析,更多 JSON 内容可以参考 JSON 教程。
Pandas 可以很方便的处理 JSON 数据,本文以 sites.json 为例,内容如下:
实例
[{"id": "A001","name": "菜鸟教程","url": "www.runoob.com","likes": 61},{"id": "A002","name": "Google","url": "www.google.com","likes": 124},{"id": "A003","name": "淘宝","url": "www.taobao.com","likes": 45}
]
import pandas as pddf = pd.read_json('sites.json')print(df.to_string())
to_string()
import pandas as pddata =[{"id": "A001","name": "菜鸟教程","url": "www.runoob.com","likes": 61},{"id": "A002","name": "Google","url": "www.google.com","likes": 124},{"id": "A003","name": "淘宝","url": "www.taobao.com","likes": 45}
]
df = pd.DataFrame(data)print(df)
以上实例输出结果为:

JSON 对象与 Python 字典具有相同的格式,
所以我们可以直接将 Python 字典转化为 DataFrame 数据:
import pandas as pd# 字典格式的 JSON
s = {"col1":{"row1":1,"row2":2,"row3":3},"col2":{"row1":"x","row2":"y","row3":"z"}
}# 读取 JSON 转为 DataFrame
df = pd.DataFrame(s)
print(df)
以上实例输出结果为:

内嵌的 JSON 数据
假设有一组内嵌的 JSON 数据文件 nested_list.json :
{"school_name": "ABC primary school","class": "Year 1","students": [{"id": "A001","name": "Tom","math": 60,"physics": 66,"chemistry": 61},{"id": "A002","name": "James","math": 89,"physics": 76,"chemistry": 51},{"id": "A003","name": "Jenny","math": 79,"physics": 90,"chemistry": 78}]
}
实例
import pandas as pddf = pd.read_json('nested_list.json')print(df)
以上实例输出结果为:

json_normalize()
import pandas as pd
import json# 使用 Python JSON 模块载入数据
with open('nested_list.json','r') as f:data = json.loads(f.read())# 展平数据
df_nested_list = pd.json_normalize(data, record_path =['students'])
print(df_nested_list)
以上实例输出结果为
json_normalize() 使用了参数 record_path
data = json.loads(f.read()) 使用 Python JSON 模块载入数据。
json_normalize() 使用了参数 record_path 并设置为 ['students'] 用于展开内嵌的 JSON 数据 students。
显示结果还没有包含 school_name 和 class 元素,如果需要展示出来可以使用 meta 参数来显示这些元数据:
import pandas as pd
import json# 使用 Python JSON 模块载入数据
with open('nested_list.json','r') as f:data = json.loads(f.read())# 展平数据
df_nested_list = pd.json_normalize(data, record_path =['students'], meta=['school_name', 'class']
)
print(df_nested_list)
以上实例输出结果为:
读取更复杂的 JSON 数据
nested_mix.json 文件内容
{"school_name": "local primary school","class": "Year 1","info": {"president": "John Kasich","address": "ABC road, London, UK","contacts": {"email": "admin@e.com","tel": "123456789"}},"students": [{"id": "A001","name": "Tom","math": 60,"physics": 66,"chemistry": 61},{"id": "A002","name": "James","math": 89,"physics": 76,"chemistry": 51},{"id": "A003","name": "Jenny","math": 79,"physics": 90,"chemistry": 78}]
}
import pandas as pd
import json# 使用 Python JSON 模块载入数据
with open('nested_mix.json','r') as f:data = json.loads(f.read())df = pd.json_normalize(data, record_path =['students'], meta=['class',['info', 'president'], ['info', 'contacts', 'tel']]
)print(df)
读取内嵌数据中的一组数据
以下是实例文件 nested_deep.json,我们只读取内嵌中的 math 字段:
{"school_name": "local primary school","class": "Year 1","students": [{"id": "A001","name": "Tom","grade": {"math": 60,"physics": 66,"chemistry": 61}},{"id": "A002","name": "James","grade": {"math": 89,"physics": 76,"chemistry": 51}},{"id": "A003","name": "Jenny","grade": {"math": 79,"physics": 90,"chemistry": 78}}]
}
这里我们需要使用到 glom 模块来处理数据套嵌,glom 模块允许我们使用 . 来访问内嵌对象的属性。第一次使用我们需要安装 glom:
pip3 install glom
import pandas as pd
from glom import glomdf = pd.read_json('nested_deep.json')data = df['students'].apply(lambda row: glom(row, 'grade.math'))
print(data)
相关文章:
pandas--->CSV / JSON
csv CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。 CSV 是一种通用的、相对简单的文…...
LeetCode算法二叉树—116. 填充每个节点的下一个右侧节点指针
目录 116. 填充每个节点的下一个右侧节点指针 题解: 代码: 运行结果: 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node {int val;Node *left;N…...
二、2023.9.28.C++基础endC++内存end.2
文章目录 17、说说new和malloc的区别,各自底层实现原理。18、 说说const和define的区别。19、 说说C中函数指针和指针函数的区别?20、 说说const int *a, int const *a, const int a, int *const a, const int *const a分别是什么,有什么特点…...
DevSecOps 将会嵌入 DevOps
通常人们在一个项目行将结束时才会考虑到安全,这么做会导致很多问题;将安全融入到DevOps的工作流中已产生了积极结果。 DevSecOps:安全正当时 一直以来,开发人员在构建软件时认为功能需求优先于安全。虽然安全编码实践起着重要作…...
不同管径地下管线的地质雷达响应特征分析
不同管径地下管线的地质雷达响应特征分析 前言 以混凝土管线为例,建立了不同管径的城市地下管线模型,进行二维地质雷达正演模拟,分析不同管径管线的地质雷达响应特征。 文章目录 不同管径地下管线的地质雷达响应特征分析前言1、管径50cm2、…...
【接口测试学习】白盒测试 接口测试 自动化测试
一、什么是白盒测试 白盒测试是一种测试策略,这种策略允许我们检查程序的内部结构,对程序的逻辑结构进行检查,从中获取测试数据。白盒测试的对象基本是源程序,所以它又称为结构测试或逻辑驱动测试,白盒测试方法一般分为…...
7.网络原理之TCP_IP(下)
文章目录 4.传输层重点协议4.1TCP协议4.1.1TCP协议段格式4.1.2TCP原理4.1.2.1确认应答机制 ACK(安全机制)4.1.2.2超时重传机制(安全机制)4.1.2.3连接管理机制(安全机制)4.1.2.4滑动窗口(效率机制…...
Docker Dockerfile解析
Dockerfile是什么 Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。 官网:Dockerfile reference | Docker Docs 构建三步骤: 编写Dockerfile文件docker build命令构建镜像docker run依镜像运行容…...
浏览器从输入URL到页面展示这个过程中都经历了什么
一. URL输入 URL是统一资源定位符,用于定位互联网上的资源,俗称网址。我们在地址栏输入网址后敲下回车,浏览器会对输入的信息进行以下判断: 1. 检查输入的内容是否是一个合法的URL连接 2. 如果合法的话,则会判断URL…...
2023-09-22 monetdb-事务管理-乐观并发控制-记录
摘要: 2023-09-22 monetdb-事务管理-记录 相关文档: Transaction Management | MonetDB Docs https://en.wikipedia.org/wiki/Optimistic_concurrency_control monetdb事务管理: MonetDB/SQL 支持以 START TRANSACTION 标记并以 COMMIT 或 ROLLBACK 关闭的多语句事务方案。如果…...
蓝桥等考Python组别四级008
第一部分:选择题 1、Python L4 (15分) 字符“D”的ASCII码值比字符“F”的ASCII码值小( )。 1234正确答案:B 2、Python L4 (15分) 下面的Python变量名正…...
SpringMVC 学习(二)Hello SpringMVC
3. Hello SpringMVC (1) 新建 maven 模块 springmvc-02-hellomvc (2) 确认依赖的导入 (3) 配置 web.xml <!--web/WEB-INF/web.xml--> <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee…...
交换机之间配置手动|静态链路聚合
两台交换机,配置链路聚合: 1、禁止自动协商速率,配置固定速率 int G0/0/1 undo negotiation auto speed 100int G0/0/2 undo negotiation auto speed 100 2、配置eth-trunk int eth-trunk 1 mode manual | lacp-staticint G0/0/1 eth-trun…...
Shiro高级及SaaS-HRM的认证授权
Shiro在SpringBoot工程的应用 Apache Shiro是一个功能强大、灵活的,开源的安全框架。它可以干净利落地处理身份验证、授权、企业会话管理和加密。越来越多的企业使用Shiro作为项目的安全框架,保证项目的平稳运行。 在之前的讲解中只是单独的使用shiro&…...
eclipse svn插件安装
1.进入eclipse的help->Eclipse Marketplace,如下图所示: 2.输入“svn”,再按回车,如下图: 3.这我选择的是 Subversive,点击后面的“install”按钮,如下图 Eclipse 下连接 SVN 库有两种插件 —— Subclipse 与 Subversive &…...
C语言 cortex-A7核 UART总线 实验
一、C 1)uart4.h #ifndef __UART4_H__ #define __UART4_H__ #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h&quo…...
不同走向地下管线的地质雷达响应特征分析
不同走向地下管线的地质雷达响应特征分析 前言 以PVC管线为例,建立不同走向(水平倾斜、垂直倾斜、水平相邻)的三维管线地质模型,进行三维地质雷达数据模拟,分析不同走向地下管线的地质雷达响应特征。 文章目录 不同…...
Nginx负载均衡详解
一、负载均衡介绍 1、负载均衡的定义 单体服务器解决不了并发量大的请求,所以,我们可以横向增加服务器的数量(集群),然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多…...
基于Spring Boot的宠物咖啡馆平台的设计与实现
目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 看护师信息管理 宠物寄养管理 健康状况管理 点单 宠物体验 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已…...
TYVJ P1026 犁田机器人
描述 Farmer John為了让自己从无穷无尽的犁田工作中解放出来,於是买了个新机器人帮助他犁田。这个机器人可以完成犁田的任务,可惜有一个小小的缺点:这个犁田机器人一次只能犁一个边的长度是整数的长方形的田地。 因為FJ的田地有树和其他障碍…...
德国工业4.0工程师指南:从系统融合到职业发展
1. 项目概述:为什么德国是工业工程师的理想目的地?如果你是一名工业、自动化或机器人领域的工程师,正在寻找一个能将你的技术抱负与前沿产业实践深度结合的职业舞台,那么德国很可能就是你一直在寻找的答案。这不仅仅是因为德国拥有…...
Spring Boot 2026教育技术演示项目全栈架构与工程实践解析
1. 项目概述:一个面向未来的教育技术演示 最近在整理开源项目时,我注意到了 holzerjm/GACEP-Spring-2026-demo 这个仓库。乍一看,这个标题信息量不小,它像是一个技术演示,但前缀 GACEP 和 Spring-2026 又透露出…...
SINAMICS V90伺服驱动器故障代码大全
SINAMICS V90伺服驱动器在运行过程中可能出现故障,导致设备停机。用户可通过BOP面板或调试软件查看故障代码,并根据以下信息判断故障原因及处理方法。序号报警号信息故障信息可能原因处理方法1F1000内部软件错误出现了一个内部软件错误。分析故障缓冲器为…...
开源机械爪技术全解析:从结构设计到ROS集成开发指南
1. 项目概述与核心价值如果你是一名开发者,尤其是在开源社区里摸爬滚打过一阵子,那你肯定对“awesome-xxx”这类项目不陌生。它们通常是一个精心整理的列表,汇聚了某个特定技术领域或工具生态下的优质资源。今天要聊的这个fundgao/awesome-op…...
Google Calendar智能安排深度拆解(Gemini原生集成技术白皮书级解析)
更多请点击: https://intelliparadigm.com 第一章:Gemini Google Calendar智能安排技术全景概览 Gemini 与 Google Calendar 的深度集成标志着日程管理进入语义理解驱动的新阶段。该能力并非简单调用 API,而是依托 Gemini 模型对自然语言指…...
搞定气象数据的基础统计与可视化
是不是看着一堆气象原始数据就头大? 不会处理、不会统计、更不会做可视化图表? 其实根本不用懂编程、不用啃复杂专业知识,普通小白也能零基础玩转气象数据,从数据整理、基础统计到出专业好看的成品图,新手也能一键拿…...
别再手动拷贝DLL了!用批处理一键搞定NX二次开发EXE的环境变量配置(VS2015+NX12)
NX二次开发环境配置革命:批处理脚本全自动解决方案 引言 对于NX二次开发工程师来说,最令人头疼的莫过于每次编译后的EXE文件无法直接运行的问题。传统解决方案要么需要手动拷贝DLL文件,要么必须将EXE放置到特定目录下,这些方法不仅…...
为什么83%的Enterprise客户在第6个月触发License超额预警?揭秘后台用量监控盲区与动态配额优化公式
更多请点击: https://intelliparadigm.com 第一章:License超额预警现象的全局观测与根本归因 License超额预警并非孤立事件,而是软件许可治理体系中多维耦合失衡的外在表征。在企业级 DevOps 平台(如 GitLab Ultimate、JetBrains…...
Tarjan算法:从DFS序到强连通分量的寻路指南(附C++实战与缩点技巧)
1. 从迷宫探索到强连通王国:Tarjan算法的生活隐喻 想象你正在探索一座巨大的迷宫,手里拿着粉笔和记事本。每走到一个新的岔路口,你就在墙上标记数字(第一个到的路口标1,第二个标2...),这就是DFS…...
【文件上传绕过】十六—十八:巧用文件幻数与内容伪装突破类型校验
1. 文件幻数:藏在二进制里的身份证 每次上传图片时,你有没有好奇过系统是怎么判断"这张图真的是JPG"的?这就像超市扫码器识别商品条形码一样,计算机其实是通过读取文件开头的几个特殊字节——我们称之为**幻数ÿ…...
