day-037-Pandas数据读取
Day 37Pandas 数据读取——从各种来源加载数据昨天手动创建了 DataFrame。现实中数据通常来自文件。今天学如何从 CSV、Excel、JSON、数据库等各类数据源中读取数据到 DataFrame。一、读取 CSV——最常用的数据源importpandasaspd# 基本读取dfpd.read_csv(data.csv)# 常用参数一览dfpd.read_csv(data.csv,encodingutf-8,# 编码sep,,# 分隔符默认逗号header0,# 第几行作为列名0第一行index_col0,# 把第几列作为行索引usecols[姓名,成绩],# 只读取指定列nrows100,# 只读前100行skiprows2,# 跳过前2行dtype{年龄:int},# 指定列的数据类型na_values[NA,缺失],# 把指定值当作 NaN)print(df.head())# 前5行print(df.tail(3))# 后3行实战读取真实数据集# 读取一个典型的 CSVdfpd.read_csv(students.csv,encodingutf-8)print(f形状{df.shape})print(f列名{list(df.columns)})print(f每列类型\n{df.dtypes})print(f\n前3行\n{df.head(3)})处理中文乱码# 尝试顺序utf-8 → gbk → gb2312 → gb18030encodings[utf-8,utf-8-sig,gbk,gb2312,gb18030,latin-1]forencinencodings:try:dfpd.read_csv(data.csv,encodingenc)print(f成功用{enc}编码读取)breakexceptUnicodeDecodeError:print(f{enc}失败尝试下一个...)continue二、写入 CSVdf.to_csv(output.csv,indexFalse,# 不保存行索引encodingutf-8-sig,# utf-8-sig 让 Excel 能正确打开中文sep,,columns[姓名,成绩],# 只保存指定列)为什么用utf-8-sig而不是utf-8utf-8标准编码但 Excel 打开时中文会乱码utf-8-sig在文件头加 BOMExcel 能正确识别中文三、读取 Excel# 先安装pip install openpyxl# 读取 Exceldfpd.read_excel(data.xlsx,sheet_nameSheet1,# 工作表名或索引 0header1,# 第2行作为列名usecolsA:D,# 只读 A-D 列nrows50,)# 读取所有工作表all_sheetspd.read_excel(data.xlsx,sheet_nameNone)forname,sheet_dfinall_sheets.items():print(f工作表 {name}{sheet_df.shape})# 写入 Excelwithpd.ExcelWriter(output.xlsx,engineopenpyxl)aswriter:df.to_excel(writer,sheet_name学生成绩,indexFalse)df.to_excel(writer,sheet_name备份,indexFalse)四、读取 JSON# 读取 JSON 文件dfpd.read_json(data.json)print(df)# 读取嵌套 JSON带结构的importjsonwithopen(api_data.json,r,encodingutf-8)asf:datajson.load(f)# 用 json_normalize 展平嵌套结构dfpd.json_normalize(data,record_path[results],# 记录所在的路径meta[page,total]# 保留的元数据字段)五、其他数据源速览# SQL 数据库需要 pip install sqlalchemy 数据库驱动fromsqlalchemyimportcreate_engine enginecreate_engine(sqlite:///database.db)dfpd.read_sql(SELECT * FROM students WHERE score 80,engine)# HTML 网页中的表格tablespd.read_html(https://example.com/data-table.html)dftables[0]# 第一个 table 标签# 剪贴板复制表格后直接在 Python 中读取dfpd.read_clipboard()# 从剪贴板读取# 字典/列表直接转 DataFramedata[{name:小明,score:85},{name:小红,score:92},]dfpd.DataFrame(data)# NumPy 数组转 DataFrameimportnumpyasnp arrnp.array([[1,2,3],[4,5,6]])dfpd.DataFrame(arr,columns[A,B,C])六、了解你的数据——读取后的第一步dfpd.read_csv(data.csv,encodingutf-8)# 第一件事概览print(f行数{len(df)}列数{len(df.columns)})print(f列名{list(df.columns)})# 查看前几行和后几行print(df.head())print(df.tail())# 查看基本统计print(df.describe())# 数值列统计print(df.describe(includeall))# 包含非数值列# 查看缺失值print(df.isnull().sum())# 每列有多少缺失值# 查看每列的唯一值数量print(df.nunique())七、实战加载并初步探索一个数据集# 创建一个模拟数据集然后探索importpandasaspdimportnumpyasnp np.random.seed(42)# 模拟网上商店订单数据n1000dfpd.DataFrame({order_id:range(1001,1001n),customer:np.random.choice([张三,李四,王五,赵六],n),product:np.random.choice([手机,电脑,平板,耳机,手表],n),price:np.random.uniform(50,5000,n).round(2),quantity:np.random.randint(1,5,n),date:pd.date_range(2026-01-01,periodsn,freqh),})# 保存为 CSVdf.to_csv(orders.csv,indexFalse,encodingutf-8-sig)# 重新加载并探索orderspd.read_csv(orders.csv,encodingutf-8-sig,parse_dates[date])# 自动解析日期列print(f数据集{orders.shape[0]}条订单{orders.shape[1]}列)print(f日期范围{orders[date].min()}~{orders[date].max()})print(f总销售额{orders[price].sum():,.2f})print(f每单均价{orders[price].mean():.2f})八、今日学习总结学习内容掌握情况一句话要点pd.read_csv()✅ 重点CSV 是最常用的数据来源编码处理✅ 重点utf-8 不行试 gbk写文件用 utf-8-sigpd.read_excel()✅ 了解需要 openpyxlpd.read_json()✅ 了解JSON 转 DataFrame数据概览✅ 重点head/info/describe/isnull/sum/nunique其他数据源✅ 了解SQL/HTML/剪贴板/NumPy今日踩坑记录CSV 第一列变成乱码存了 utf-8 但带 BOM 头。用encodingutf-8-sig读取。大文件 read_csv 太慢用nrows100先看前100行确定列名和类型再用dtype指定类型能快很多。日期列被当成字符串read_csv默认不解析日期。用parse_dates[date_column]参数。九、明天学什么学会了读取数据明天学 Pandas 的核心技能——数据清洗处理缺失值、重复值、类型转换、异常值。数据科学 80% 的时间在清洗数据。Pandas 让这个过程从痛苦变成顺手。第37天打卡完成。明天见本系列是个人学习笔记如有错误欢迎在评论区指正交流。

相关新闻

解决Docker Desktop WSL2磁盘空间不释放问题

解决Docker Desktop WSL2磁盘空间不释放问题

1. 问题现象与背景分析在Windows系统上使用Docker Desktop配合WSL2后端运行时,用户经常遇到一个棘手问题:删除容器后,WSL2分配的磁盘空间并未自动释放。随着容器创建和删除次数的增加,WSL2虚拟硬盘文件(ext4.vhdx&…

2026/10/11 18:37:53 阅读更多 →
网络符号‘5.31‘的传播机制与社会影响分析

网络符号‘5.31‘的传播机制与社会影响分析

1. "5.31"现象的社会观察 "5.31"这个日期数字组合在近年来的网络语境中逐渐演变成一个具有特殊含义的符号。最初它只是日历上一个普通的日子,但随着网络文化的发酵,这个日期被赋予了更多象征意义。从我的观察来看,这种现…

2026/10/11 18:37:38 阅读更多 →
CentOS防火墙管理:firewalld与iptables端口开放指南

CentOS防火墙管理:firewalld与iptables端口开放指南

1. 理解端口开放的基本概念在CentOS系统中开放端口是系统管理员和开发人员的日常工作之一。端口是网络通信的端点,每个网络服务都需要通过特定的端口与外界通信。理解端口开放的本质,有助于我们更安全、高效地管理系统。端口开放实际上是在操作系统的防火…

2026/10/11 18:37:10 阅读更多 →

最新新闻

主动型AI不是伪需求:从被动问答到主动行为预测的设计实战

主动型AI不是伪需求:从被动问答到主动行为预测的设计实战

哈,这个话题最近在圈子里炸开锅了。很多人私信问我“主动型AI到底是不是又一个伪需求”,我特地去翻了海外技术博客和几个大厂公开的demo,聊了一圈回来,先把结论放这儿:方向是真的,但现在九成团队都在用做“…

2026/10/14 22:58:51 阅读更多 →
剔除骑行路上的“三颗沙子”:身体、钱包与心态的持久热爱指南

剔除骑行路上的“三颗沙子”:身体、钱包与心态的持久热爱指南

骑了这么多年车,周围一起出发的人换了好几拨。有人第一年热情高涨,天天刷圈速,第二年就把车挂在闲鱼上;有人跟着买了全套顶级装备,骑了三次就落灰;还有人膝盖疼了两个月,从此看见坐垫就心里发怵…

2026/10/14 22:58:51 阅读更多 →
Flink动态配置热更新:基于BroadcastState的毫秒级规则变更方案

Flink动态配置热更新:基于BroadcastState的毫秒级规则变更方案

1. 项目概述:为什么Flink任务配置不能“改完就生效”?在某次数据平台升级中,我负责支撑一个实时风控场景的Flink作业集群——它要对每秒数万笔交易做毫秒级异常识别,规则引擎依赖外部配置中心下发的阈值、黑白名单和模型版本号。上…

2026/10/14 22:58:51 阅读更多 →
Flink动态配置热更新实战:零重启秒级生效方案

Flink动态配置热更新实战:零重启秒级生效方案

1. 这不是“改个配置重启一下”那么简单:为什么Flink任务配置必须动态更新在某公司实时风控系统上线后的第三个月,凌晨两点,监控告警突然炸开——某核心Flink作业的TPS从8000骤降至200,延迟飙升至分钟级。运维同学第一反应是“赶紧…

2026/10/14 22:58:51 阅读更多 →
基于吸血水蛭优化器的单仓库多旅行商问题Matlab求解实践

基于吸血水蛭优化器的单仓库多旅行商问题Matlab求解实践

前阵子有朋友找我帮忙优化一个同城配送的调度模块:一个出发点,三台车,要同时覆盖周边二十来个服务点,不能重复也不能漏,最后都要回到出发点。一开始我还想直接上经典TSP,结果算下来发现两条腿根本不够&…

2026/10/14 22:58:51 阅读更多 →
昇腾AI守正与开放:大模型时代软硬件协同与开发者迁移实战

昇腾AI守正与开放:大模型时代软硬件协同与开发者迁移实战

1. 从"淘金热"说起:大模型浪潮里真正稀缺的是什么大模型这波浪潮,用"淘金热"来形容一点都不夸张。过去两年,几乎每一家有点技术积累的公司都在往这个方向挤:有的做基础模型训练,有的做行业微调&am…

2026/10/14 22:57:48 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →