当前位置: 首页 > news >正文

Python数据操作

 一、csv,xls,xlsx文件的操作

 1.读写操作

写入文件时最好加入index=False,避免索引被写入

#读取CSV
df_csv = pd.read_csv('data.csv', encoding='utf-8') # 有中文时可能需要调整编码#写CSV
df_csv.to_csv('output.csv', index=False, encoding='utf-8')#读取XLSX
df_xlsx = pd.read_excel('data.xlsx', engine='openpyxl') # 依赖openpyxl#写XLSX
df_xlsx.to_excel('output.xlsx', index=False, engine='openpyxl')#读取XLS
df_xls = pd.read_excel('data.xls', engine='xlrd') # 依赖xlrd#写XLS
df_xls.to_excel('output.xls', index=False, engine='xlwt')

 具体实操:

import pandas as pd
df = pd.DataFrame({'学号': [1, 2, 3, 4],'姓名': ['张三', '李四', '张三', '王五'],'年龄': [18, 19, 21, 18]
})# 读写csv
df1 = pd.read_csv('data.csv', encoding='gbk')    
#打印文档
print(df1) 
print("------------------")
#打印具体行
print(df1[df1['姓名']=="张三"])# 将 Df1 保存为 CSV 文件
df1.to_csv('output.csv', index=False)

输出: 

 修改表格内容:

df1.loc[df1['姓名']=='张三','分数'] = 99
print(df1)

添加列:

df1['三评'] = None
print(df1)

添加行 :

new_row = pd.DataFrame({'姓名': ['赵六'], '分数': [85]}) #此处可多行
df1 = pd.concat([df1, new_row])
print(df1)
df1.loc[4] = [5,'王五', 79,32] #loc中的是索引号
print(df1)

 写入:

df1.to_csv('output.csv',index=False) #index一定要False,不然索引也打印出来

二、json的格式转化

Python 对象 → JSON 字符串(dumps):

import json
data = {"name": "Alice", "age": 25, "isStudent": False}
json_str = json.dumps(data)

JSON 字符串 → Python 对象:

json_str = '{"name": "Bob", "age": 30, "isStudent": true}'
data = json.loads(json_str)
print(data["name"])  

注意这是字符串的转换,不是文件的写入


从 JSON 文件读取为 Python 对象(load)

with open('data.json', 'r', encoding='utf-8') as f:data = json.load(f)print(data)

Python 对象写入 JSON 文件(dump)

with open('data.json', 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False, indent=2)#ensure_ascii=False 让 JSON 文件里的中文正常显示,而不是变成 \uXXXX 这样的转义字符。
#indent=2 让 JSON 文件内容格式化缩进,方便阅读。

三、表的拼接操作 

 方法         描述                                                                                        适合场景

merge()    按列名对齐,支持连接方式:inner、outer、left、right     数据库风格拼接,推荐

concat()    按列对齐合并多个 表,默认对齐索引                列数可能不一致、要保留所有数据

axis=0纵向拼接(默认)
axis=1横向拼接(列对齐,索引为准)
join='outer'并集拼接(补NaN)
join='inner'交集拼接(只保留共有索引)
keys=['A', 'B']增加层次列名
df1 = pd.DataFrame({"学号": [1, 2, 3],"姓名": ["张三", "李四", "王五"]
})df2 = pd.DataFrame({"学号": [1, 2, 3],"分数": [85, 76, 90]
})df2_conflict = pd.DataFrame({"学号": [1, 2, 5],"分数": [85, 76, 59],"姓名": ["张三", "李四", "陈六"]
})
  1. 横向拼接(按列对齐)

    交集拼接

#仅有一个相同的列名:学号
df_merge = pd.merge(df1, df2, on="学号", how='outer')
print(df_merge)df_merge = pd.concat([df1, df2],axis=1,join='inner')
print(df_merge)

#有不止一个的相同列名:学号,姓名;如果直接拼接会出现冲突报错#删除相同的列
df2_conflict_delete = df2_conflict.drop(columns=['姓名'])  # 删除重复列
df_merge = pd.merge(df1, df2_conflict_delete, on='学号')
print(df_merge)#重命名列名
df2_conflict_rename = df2_conflict.rename(columns={'姓名': '姓名_三评'})
df_merge = pd.merge(df1, df2_conflict_rename, on='学号')
print(df_merge)

2.纵向拼接(按行对齐)

        有重复的列拼接后也会重复

df_a = pd.DataFrame({"学号": [1, 2],"姓名": ["张三", "李四"],"分数": [85, 76]
})df_b = pd.DataFrame({"学号": [2,3, 4],"姓名": ["李四","王五", "赵六"],"分数": [76,90, 88]
})df_concat = pd.concat([df_a, df_b], ignore_index=True)
print(df_concat)

 

http://www.lryc.cn/news/571818.html

相关文章:

  • Docker搭建RabbitMQ集群环境
  • 机器学习重构光子学设计范式:从智能器件到前沿系统
  • 【力扣每日一题】划分数组并满足最大差限制
  • iOS开发中的安全实践:如何通过Ipa混淆与加固确保应用安全
  • AI 技术落地实战:开发流程优化、行业场景重塑与前沿应用洞察
  • Evertz SVDN 3080ipx-10G Web管理接口任意命令注入及认证绕过漏洞(CVE-2025-4009)
  • Hive 逻辑优化器
  • 持续集成 CI/CD-Jenkins持续集成GitLab项目打包docker镜像推送k8s集群并部署至rancher
  • 京东618带火四大消费 即时零售和生活服务迎来爆发
  • 几种大功率远距传输WiFI解决方案
  • Spring Boot 常用注解整理
  • 支持selenium的chrome driver更新到137.0.7151.119
  • 面向智能制造场景的永磁同步电机预测控制系统设计
  • python大学校园旧物捐赠系统
  • 火山 RTC 引擎12----合流转推 集成
  • (LeetCode 每日一题) 2966. 划分数组并满足最大差限制 (贪心、排序)
  • [Python][Flask][Gunicorn] 搭建一个服务器-初步-小白式教程 - 1
  • 【系统分析师】第3章-基础知识:计算机系统(核心总结)
  • 如何在 MX Linux 上安装 Blender CAD 软件
  • 资源占用多,Linux 系统中如何降低 CPU 资源消耗并提升利用率?
  • 成组进位及其函数
  • 一篇文章快速学会HTML
  • 智能照明新篇章:电力载波技术的优势与未来展望​
  • 如何配置 SQL Server 混合身份验证模式​
  • [pyvips] 枚举类型 | 错误处理(c->py)
  • LoRA、QLoRA是什么
  • 分布式——分布式系统设计策略一
  • 【threejs】VR看房项目经验总结
  • java高级——注解和反射
  • MySQL 数据处理函数全面详解