Python----数据分析(Pandas一:pandas库介绍,pandas操作文件读取和保存)
一、Pandas库

1.1、概念
Pandas是一个开源的、用于数据处理和分析的Python库,特别适合处理表格类数 据。它建立在NumPy数组之上,提供了高效的数据结构和数据分析工具,使得数据操作变得更加简单、便捷和高效。
Pandas 的目标是成为 Python 数据分析实践与实战的必备高级工具,其长远目标是成为最强大、最灵活、可以支持任何语言的开源数据分析工具
1.2、数据结构
1. Series:一维数组,可以存储任何数据类型(整数、字符串、浮点数等),每个 元素都有一个与之对应的标签(索引)。
2. DataFrame:二维表格型数据结构,可以视为多个 Series 对象的集合,每一列 都是一个 Series。每列可以有不同的数据类型,并且有行和列的标签。
1.3、数据操作
读取和保存数据:支持多种数据格式,如 CSV、Excel、SQL 数据库、JSON 等。
数据选择和过滤:提供灵活的索引和条件筛选功能,方便数据的提取和过滤。
数据清洗:提供了处理缺失数据、重复数据、异常值等数据清洗功能。
数据转换:通过 apply(), map(),replace()等方法进行数据转换。
数据合并:使用concat(), merge(), join()等方法进行数据的横向和纵向合并。
聚合和分组:使用 组和聚合。
1.4、主要特点
1. 数据结构:Pandas提供了两种主要的数据结构:Series(一维数组)和 DataFrame(二维表格)。
2. 数据操作:支持数据的增、删、改、查等操作,以及复杂的数据转换和清洗。
3. 数据分析:提供丰富的数据分析方法,如聚合、分组、透视等。
4. 文件读取与写入:支持多种文件格式(如CSV、Excel、SQL等)的读取和写入。
5. 与其他库集成良好:Pandas 与许多其他三方库(如 NumPy、Matplotlib、 Scikit-learn等)无缝集成,形成了一个强大的数据科学生态系统。
6. 强大的社区支持:Pandas 拥有庞大的开发者社区,提供丰富的资源和学习材 料。
官方文档
http://pandas.pydata.org/pandas-docs/stable/
安装
pip install pandas
二、Pandas的读取与保存
2.1、读取数据
2.1.1、Pandas读取Excel文件
说明
使用Pandas模块操作Excel时候,需要安装openpyxl
pip install openpyxl==3.1.2
pandas.read_excel是pandas库中用于读取Excel文件( .xls 或 数。它可以将Excel文件中的数据读取为DataFrame对象,便于进行数据分析和处 理。
pandas.read_excel(io, sheet_name=0, header=0, index_col=None, usecols=None, squeeze=False,dtype=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, parse_dates=False, date_parser=None,skipfooter=0, convert_float=True, **kwds)
| 描述 | 说明 |
|---|---|
| io | 文件路径或文件对象。这是唯一必需的参数,用于指定要读取的Excel文件。 |
| sheet_name=0 | 要读取的表名或表的索引号。默认为0,表示读取第一个工作 表。可以指定工作表名或索引号,如果指定多个,将返回一个字典,键为工作表 名,值为对应的DataFrame。 |
| header=0 | 用作列名的行号,默认为0,即第一行作为列名。如果没有标题行, 可以设置为None。 |
| index_col=None | 用作行索引的列号或列名。默认为None,表示不使用任何列 作为索引。可以是一个整数、字符串或列名的列表。 |
| usecols=None | 要读取的列。默认为None,表示读取所有列。可以是一个整数 列表、字符串列表或Excel列的位置(如 [0, 1, 2])或字母标记(如 ['A', 'B', 'C'])。 |
| squeeze=False | 如果读取的数据只有一列,当设置为True时,返回一个Series 而不是DataFrame。 |
| dtype=None | 指定某列的数据类型。默认为None,表示自动推断。可以是一个 字典,键为列名,值为NumPy数据类型。 |
| skiprows=None | 要跳过的行号或行号列表。默认为None,表示不跳过任何行。 可以是整数或整数列表。 |
| nrows=None | 读取的行数,从文件头开始。默认为None,表示读取所有行。 |
| na_values=None | 将指定的值替换为NaN。默认为None,表示不替换。可以是 一个值或值的列表。 |
| keep_default_na=True | 如果为True(默认),则除了通过 na_values指定的值外,还将默认的NaN值视为NaN。 |
| parse_dates=False | 是否尝试将列解析为日期。默认为False。可以是一个布尔 值、列名列表或列号的列表。 |
| date_parser=None | 用于解析日期的函数。默认为None,表示使用pandas默认 的日期解析器。 |
| skipfooter=0 | 要跳过的文件底部的行数。默认为0,表示不跳过任何底部的 行。 |
| convert_float=True | 是否将所有浮点数转换为64位浮点数。默认为True,以 避免数据类型推断问题。 |
| **kwds | 允许用户传递其他关键字参数,这些参数可能会被引擎特定的读取器所 识别。 |
import pandas as pd
pd.read_excel('stu_data.xlsx')
指定导入哪个Sheet
pd.read_excel('stu_data.xlsx',sheet_name='Target') pd.read_excel('stu_data.xlsx',sheet_name=0)
通过index_col指定行索引
pd.read_excel('stu_data.xlsx',sheet_name=0,index_col=0)
通过header指定列索引
pd.read_excel('stu_data.xlsx',sheet_name=0,header=1) pd.read_excel('stu_data.xlsx',sheet_name=0,header=None)
通过usecols指定导入列
pd.read_excel('stu_data.xlsx',usecols=[1,2,3])
2.1.2、Pandas读取数据_CSV文件
pandas.read_csv 是一个非常强大的函数,用于从文件、URL、文件-like对象等读 取逗号分隔值(CSV)文件。这个函数有很多参数,允许你以多种方式自定义数据加 载过程。
pandas.read_csv(filepath_or_buffer, sep, header, usercols, na_values, parse_dates, skiprows, nrows)
| 描述 | 说明 |
|---|---|
| filepath_or_buffer | 指定要读取的 CSV 文件的路径或文件对象。可以是一个 字符串,表示文件的绝对路径或相对路径;也可以是一个已经打开的文件对象 (例如通过 open() 函数打开的文件)。 |
| sep | 字符串,用于分隔字段的字符。默认是逗号,,但可以是任何字符,例如 ';' 或 '\t'(制表符)。 |
| header | 整数或整数列表,用于指定行号作为列名,或者没有列名, |
| usecols | 列表或 callable,用于指定要读取的列。可以是列名的列表,也可以是 列号的列表。 |
| na_values | 字符串、列表或字典,用于指定哪些其他值应该被视为NA/NaN |
| parse_dates | 列表或字典,用于指定将哪些列解析为日期。 |
| skiprows | 整数或列表,用于指定要跳过的行号或条件。 |
| nrows | 整数,用于指定要读取的行数。 |
导入csv文件时除了指明文件路径,还需要设置编码格式。
在国内,Python中用得比较多的两种编码格式是UTF-8和gbk,默认编码格式是UTF-8。
通过设置参数encoding来设置导入的编码格式。
pd.read_csv('stu_data.csv',encoding='gbk')
2.1.4、Pandas读取txt文件
导入.txt文件用得方法时read_table(),read_table()是将利用分隔符分开的文件导入。DataFrame的通用函数。它不仅仅可以导入.txt文件,还可以导入.csv文件。
导入.txt文件
pd.read_table('test_data.txt',encoding='utf-8',sep='\t')
导入.csv文件,指明分隔符
pd.read_table('stu_data.csv',encoding='gbk',sep=',')
2.1.5、读取数据库数据
配置 MySQL 连接引擎
conn = pymysql.connect( host = 'localhost', user = 'root', passwd = 'root', db = 'mydb',port=3306, charset = 'utf8' )读取数据表
pd.read_sql( sql :需要执行的 SQL 语句/要读入的表名称con : 连接引擎名称 index_col = None :将被用作索引的列名称 columns = None :当提供表名称时,需要读入的列名称 list ) tab1 = pd.read_sql('SELECT * FROM t_menus',con=conn) tab1 = pd.read_sql('SELECT count(1) FROM t_menus',con=conn)number = 10 tab1 = pd.read_sql(f'SELECT * FROM t_menus LIMIT {number}',con=conn,index_col = ['empno'],)数据sql
CREATE TABLE `t_menus` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(32) NOT NULL,`path` varchar(32) DEFAULT NULL,`level` int(11) DEFAULT NULL,`pid` int(11) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `name` (`name`),KEY `pid` (`pid`),CONSTRAINT `t_menus_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `t_menus` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8mb4;INSERT INTO `t_menus` VALUES (-1,'全部',NULL,0,NULL),(1,'用户管理',NULL,1,-1),(2,'权限管理',NULL,1,-1),(3,'商品管理',NULL,1,-1),(4,'订单管理',NULL,1,-1),(5,'数据统计',NULL,1,-1),(11,'用户列表','/user_list',2,1),(21,'角色列表','/author_list',2,2),(22,'权限列表','/role_list',2,2),(31,'商品列表','/product_list',2,3),(32,'分类列表','/group_list',2,3),(33,'属性列表','/attribute_list',2,3),(41,'订单列表','/order_list',2,4),(51,'统计列表','/data_list',2,5);
2.2、保存数据
df.to_csv( filepath_or_buffer :要保存的文件路径 sep =:分隔符 columns :需要导出的变量列表 header = True :指定导出数据的新变量名,可直接提供 list index = True :是否导出索引 mode = 'w' : Python 写模式,读写方式:r,r+ , w , w+ , a , a+ encoding = 'utf-8' :默认导出的文件编码格式
)
df2.to_csv('temp.csv')
#===========================
df.to_excel( filepath_or_buffer :要读入的文件路径 sheet_name = 1|Sheet :要保存的表单名称
)
df2.to_excel('temp.xlsx', index = False, sheet_name = data)
2.2.1、to_csv
用于将DataFrame对象保存为CSV(逗号分隔值)文件的方法。
DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None, columns=None, header=True, index=True, mode='w', encoding=None, quoting=None, quotechar='"', **kwargs)
| 描述 | 说明 |
|---|---|
| path_or_buf | 指定输出文件的路径或文件对象。 |
| sep | 字段分隔符,通常使用逗号,或制表符\t。 |
| na_rep | 缺失值的表示方式,默认为空字符串 ''。 |
| float_format | 浮点数的格式化方式,例如 '%.2f'用于格式化为两位小数。 |
| columns | 要写入的列的子集,默认为None,表示写入所有列。 |
| header | 是否写入行索引,通常设置为True或False,取决于是否需要索引。 |
| index | 是否写入列名,通常设置为True。 |
| mode | 写入模式,通常使用’w’(写入,覆盖原文件)或’a’(追加到文件末尾)。 |
| encoding | 文件编码,特别是在处理非ASCII字符时很重要 |
| quoting | 控制字段引用的行为,通常用于确保字段中的分隔符被正确处理。 |
| quotechar | 用于包围字段的字符,默认为双引号"。 |
| **kwargs | 其他关键字参数。 |
import pandas as pd# 创建一个简单的DataFrame
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [28, 34, 29],
'城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)
# 将DataFrame保存为CSV文件
df.to_csv('人员信息.csv', index=False, encoding='utf_8_sig')
2.2.2、to_excel
Pandas中的 to_excel用于将DataFrame保存为Excel文件。
DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, inf_rep='inf', freeze_panes=None, storage_options=None)
| 描述 | 说明 |
|---|---|
| excel_writer | 字符串或ExcelWriter对象,指定输出文件的路径或文件对象。 |
| sheet_name='Sheet1' | 要写入的工作表名称。 |
| na_rep='' | 指定缺失值的表示方式。 |
| float_format=None | 浮点数的格式化方式,例如’%.2f’。 |
| columns=None | 要写入的列的子集,默认为None,表示写入所有列。 |
| header=True | 是否写入列名,默认为True。 |
| index_label=None | 是否写入行索引,默认为True。 |
| index=True | 指定行索引列的列名,如果为None,并且 : header为True,则使用索引名。 |
| startrow= | 写入DataFrame的起始行位置,默认为0。 |
| startcol=0 | 写入DataFrame的起始列位置,默认为0。 |
| engine=None | 指定用于写入文件的引擎,可以是’openpyxl’(默认) 或’xlsxwriter’。 |
| merge_cells=True | 是否合并单元格,这在有合并单元格的Header时很有用。 |
| inf_rep='inf' | 指定无限大的表示方式。 |
| freeze_panes=None | 指定冻结窗口的单元格范围,例如’A2’。 |
| storage_options=None | 指定存储连接的参数,例如认证凭据。 |
import pandas as pd
# 创建一个简单的DataFrame
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [28, 34, 29],
'城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)
# 将DataFrame保存为Excel文件
df.to_excel('人员信息.xlsx', index=False)
2.2.3、保存数据到数据库
注意
需要安装sqlalchemy
pip install sqlalchemy
df.to_sql( name :将要存储数据的表名称con : 连接引擎名称 if_exists = 'fail' :指定表已经存在时的处理方式 fail :不做任何处理(不插入新数据) replace :删除原表并重建新表 append :在原表后插入新数据 index = True :是否导出索引 )from sqlalchemy import create_engine
con = create_engine('mysql+pymysql://root:root@localhost:3306/mydb?charset=utf8') df.to_sql('t_stu',con,if_exists=append)
三、思维导图

相关文章:
Python----数据分析(Pandas一:pandas库介绍,pandas操作文件读取和保存)
一、Pandas库 1.1、概念 Pandas是一个开源的、用于数据处理和分析的Python库,特别适合处理表格类数 据。它建立在NumPy数组之上,提供了高效的数据结构和数据分析工具,使得数据操作变得更加简单、便捷和高效。 Pandas 的目标是成为 Python 数据…...
基于WebRTC技术的EasyRTC嵌入式音视频SDK:多平台兼容与性能优化
在当今数字化、智能化的时代背景下,实时音视频通信技术已成为众多领域不可或缺的关键技术。基于WebRTC技术的EasyRTC嵌入式音视频SDK,凭借其在ARM、Linux、Windows、安卓、iOS等多平台上的兼容性,为开发者提供了强大的工具,推动了…...
【快速入门】MyBatis
一.基础操作 1.准备工作 1)引入依赖 一个是mysql驱动包,一个是mybatis的依赖包: <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><vers…...
提升 React 应用性能:使用 React Profiler 进行性能调优
前言 在现代前端开发中,性能优化是一个不可忽视的重要环节。在 React 生态系统中,React Profiler 是一个强大的工具,它可以帮助我们检测和优化应用的性能。 本文将通过通俗易懂的语言介绍 React Profiler 的作用,并展示如何使用它…...
八、Prometheus 静态配置(Static Configuration)
所有的配置都可以用静态配置来监控,只不过用servicemonitor简单,但是域名需要静态配置 如果使用 Prometheus 静态配置(Static Configuration),确实不需要 ServiceMonitor、Service 和 Endpoints,但这也意味着失去了 Kubernetes 自动发现(Service Discovery, SD) 的能力…...
重生之我在学Vue--第16天 Vue 3 插件开发
重生之我在学Vue–第16天 Vue 3 插件开发 文章目录 重生之我在学Vue--第16天 Vue 3 插件开发前言一、插件的作用与开发思路1.1 插件能做什么?1.2 插件开发四部曲 二、开发全局通知插件2.1 插件基础结构2.2 完整插件代码(带注释解析)2.3 样式文…...
网络VLAN技术详解:原理、类型与实战配置
网络VLAN技术详解:原理、类型与实战配置 1. 什么是VLAN? VLAN(Virtual Local Area Network,虚拟局域网) 是一种通过逻辑划分而非物理连接隔离网络设备的技术。它允许管理员将同一物理网络中的设备划分为多个独立的广播…...
使用自动导入后,eslint报错 eslint9
前提:使用pnpm create vuelatest创建vue应用,并且在创建项目时就勾选eslint和prettier,不然有些配置还需要手动配,比如解决eslint和prettier的冲突问题 1. 解决使用自动导入后Eslint报错问题 配置vite.config.ts // 自动导入api…...
高德爬取瓦片和vue2使用
1、渲染瓦片地址 <template><div class"command-center"><div id"mapContainer" ref"map" class"mapContainer"/></div> </template><script> import Vue from vue import L from leaflet expor…...
交互式可视化进阶(Plotly Dash构建疫情仪表盘)
这里写目录标题 交互式可视化进阶(Plotly Dash构建疫情仪表盘)1. 引言2. 项目背景与意义3. 数据集生成与介绍4. GPU加速在数据处理中的应用5. 交互式仪表盘构建与Plotly Dash6. PyQt GUI集成与美化7. 工程整体架构8. 部分代码实现9. 代码自查与BUG排查10. 总结与展望交互式可…...
如何选择适合您智能家居解决方案的通信协议?
如何选择适合您智能家居解决方案的通信协议? 在开发智能家居产品时,选择合适的通信协议对于设备的高效运行及其在智能家居系统中的互操作性至关重要。市面上协议众多,了解它们的特性并在做决定前考虑各种因素是非常必要的。以下是一些帮助您…...
如何实现Spring Boot与Oracle数据库的完美对接?
想要在Spring Boot项目中使用Oracle数据库?这可不是一件难事!接下来,我将带你一步步走过这个过程,从环境准备到配置,再到实际操作,确保你能够轻松对接Oracle数据库。 环境准备 首先,确保你已经…...
RabbitMQ可靠性进制
文章目录 1.生产者可靠性生产者重连生产者确认小结 2. MQ的可靠性数据持久化LazyQueue小结 3. 消费者的可靠性消费者确认机制消费者失败处理方案业务幂等性唯一消息ID业务判断 兜底方案业务判断 兜底方案 1.生产者可靠性 生产者重连 在某些场景下由于网络波动,可能…...
版本控制器Git(5)
文章目录 前言一、理解标签二、创建标签三、操作标签四、多人协作场景一五、多人协作场景二总结 前言 本篇是最后一篇,主要介绍标签管理有关的内容 一、理解标签 标签定义:在Git中,标签(tag)是对某次提交(c…...
Unity引擎架构介绍及代码示例
Unity是一款跨平台的游戏开发引擎,其强大的功能和灵活的架构使得它成为众多游戏开发者的首选。本文将详细介绍Unity引擎的架构,并通过代码示例展示其在实际开发中的应用。 一、Unity引擎架构概述 Unity引擎的架构可以分为以下几个主要部分: 1…...
【数据分析】读取文件
3. 读取指定列 针对只需要读取数据中的某一列或多列的情况,pd.read_csv()函数提供了一个参数:usecols,将包含对应的columns的列表传入该参数即可。 上面,我们学习了读取 "payment" 和 "items_count" 这…...
Dify使用部署与应用实践
最近在研究AI Agent,发现大家都在用Dify,但Dify部署起来总是面临各种问题,而且我在部署和应用测试过程中也都遇到了,因此记录如下,供大家参考。Dify总体来说比较灵活,扩展性比较强,适合基于它做…...
Java 大视界 -- 基于 Java 的大数据机器学习模型的迁移学习应用与实践(129)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
1.Windows+vscode+cline+MCP配置
文章目录 1.简介与资源2.在windows中安装vscode及Cline插件1. 安装vscode2. 安装Cline插件3. 配置大语言模型3. 配置MCP步骤(windows) 1.简介与资源 MCP官方开源仓库 MCP合集网站 参考视频 2.在windows中安装vscode及Cline插件 1. 安装vscode 2. 安装Cline插件 Cline插件…...
C#的字符串之String类与StringBuilder类区别于适用场景
一、分清楚值类型与引用类型 正确理解值类型与引用类型,可以更好的帮助软件开发人员写出性能更好且正确稳定运行的程序: C#值类型与引用类型区别 区别值类型引用类型定义所有继承自【System.ValueType】类型的都是值类型(valueType继承自Sys…...
关于WPS的Excel点击单元格打开别的文档的两种方法的探究【为单元格添加超链接】
问题需求 目录和文件结构如下: E:\Dir_Level1 │ Level1.txt │ └─Dir_Level2│ Level2.txt│ master.xlsx│└─Dir_Level3Level3.txt现在要在master.xlsx点击单元格进而访问Level1.txt、Level2.txt、Level3.txt这些文件。 方法一:“单元格右键…...
conda的基本使用及pycharm里设置conda环境
创建conda环境 conda create --name your_env_name python3.8 把your_env_name换成实际的conda环境名称,python后边的根据自己的需要,选择python的版本。 激活conda环境 conda activate your_env_name 安装相关的包、库 conda install package_name …...
计算机网络-网络规划与设计
基本流程 需求分析—》通信规范分析—》逻辑网络设计—》物理网络设计—》实施阶段 需求分析: 确定需求,包括:业务需求、用户需求、应用需求、计算机平台需求、网络通信需求等。 产物:需求规范 通信规范分析: 现有…...
【QA】建造者模式在Qt有哪些应用
#设计模式 #Qt 一、QDomDocument(XML 文档构建) 模式角色: Builder:QDomDocument 本身Product:XML 文档对象Director:用户代码通过 QDomDocument 逐步构建文档结构 示例代码: QDomDocument…...
六种最新优化算法(TOC、MSO、AE、DOA、GOA、OX)求解多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码
一、算法简介 (一)阿尔法进化(Alpha Evolution,AE)算法 阿尔法进化(Alpha Evolution,AE)算法是2024年提出的一种新型进化算法,其核心在于通过自适应基向量和随机步长的…...
练习-依依的询问最小值(前缀和差分)
问题描述 依依有个长度为 n 的序列 a,下标从 1 开始。 她有 m 次查询操作,每次她会查询下标区间在[li,ri] 的 a 中元素和。她想知道你可以重新排序序列 a,使得这 m 次查询的总和最小。 求你求出 m 次查询总和的最小值。 输入格式 第…...
ctfshow web刷题记录
RCE 第一题 eval代码执行 : 1、使用system 加通配符过滤 ?csystem("tac%20fl*") ; 2、反字节执行 xxx %20 echo 反字节 3、变量转移 重新定义一个变量 让他代替我们执行 4、伪协议玩法 ?cinclude$_GET[1]?>&1php://filter/readc…...
MySQL单表查询大全【SELECT】
山再高,往上攀,总能登顶;路再长,走下去,定能到达。 Mysql中Select 的用法 ------前言------【SELECT】0.【准备工作】0.1 创建一个库0.2 库中创建表0.3 表中加入一些数据 1.【查询全部】2.【查询指定列】2.1查询指定列…...
考研系列-408真题计算机网络篇(18-23)
写在前面 此文章是本人在备考过程中408真题计算机网络部分(2018年-2023年)的易错题及相应的知识点整理,后期复习也常常用到,对于知识提炼归纳理解起到了很大的作用,分享出来希望帮助到大家~ # 2018 1.停止-等待协议的…...
卷积神经网络(CNN)之 EfficientNet
在深度学习领域,模型的计算效率与性能之间的平衡一直是一个核心挑战。随着卷积神经网络(CNN)在图像分类、目标检测等任务中取得显著成果,模型的复杂度和计算需求也急剧增加。2019年,Google Research 提出的 EfficientN…...
