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)

三、思维导图

 

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

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

相关文章

Type-C:智能家居的电力革命与空间美学重构

在万物互联的时代浪潮中,家居空间正经历着从功能容器到智慧终端的蜕变。当意大利设计师安东尼奥奇特里奥提出"消失的设计"理念二十年后,Type-C充电技术正以润物无声的方式重塑着现代家居的形态与内核,开启了一场静默的居住革命。 【…

C++ 左值(lvalue)和右值(rvalue)

在 C 中,左值(lvalue)和右值(rvalue)是指对象的不同类别,区分它们对于理解 C 中的表达式求值和资源管理非常重要,尤其在现代 C 中涉及到移动语义(Move Semantics)和完美转…

【含文档+PPT+源码】基于SpringBoot和Vue的编程学习系统

项目介绍 本课程演示的是一款 基于SpringBoot和Vue的编程学习系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项…

关于新奇的css

background: linear-gradient(154deg, #07070915 30%, hsl(var(--primary) / 30%) 48%, #07070915 64%); filter: blur(100px); background: linear-gradient(154deg, #07070915 30%, hsl(var(--primary) / 30%) 48%, #07070915 64%); 这是一个线性渐变背景设置,角度…

Maxscript如何通过单击现有按钮添加新按钮?

创建一个按钮,你可以单击它,然后添加一个新按钮。 你必须创建一个动态UI,使用maxscript UI元素,将卷展栏构建为字符串,然后评估该字符串并打开新的卷展栏以更新你的UI;使用RolloutCreator(请参阅帮助文件)帮助您构建卷展栏,并打开新的卷展栏以更新您的UI,看下面的示…

Android控件Selector封装优化指南:高效实现动态UI效果

本文详细介绍了如何在Android开发中优化selector的封装,涵盖Button、TextView、ImageView、CheckBox、RadioButton等常见控件的动态效果实现。通过结合Material Design组件、矢量图、Ripple效果以及动画Selector,提供了一套现代化、高性能的解决方案&…

pytest+allure+jenkins

本地运行参考:pytestallure 入门-CSDN博客 jenkins运行如下: 安装插件:allure 配置allure安装目录 配置pytest、allure 环境变量 配置流水线 进行build,结果如下 ,点击allure report 查看结果

C#核心笔记——(五)框架概述

.NET Ftamework中几乎所有功能都是通过大量的托管类型提供的。这些类型组织在层次化的命名空间中,并打包为一套程序集,与CLR一起构成了.NET平台。 有些.NET类型是由CLR直接使用的,且对于托管宿主环境而言是必不可少的。这些类型位于一个名为…

phpstudy+phpstorm+xdebug【学习笔记】

配置PHPStudy 配置PHPSTORM phpstorm选择PHP版本 配置DEBUG 设置服务器 编辑配置 学习参考链接::https://blog.csdn.net/m0_60571842/article/details/133246064

Vue:Vue+TS学习笔记

文章目录 前文Vue 3学习 Vue3 的重要性变更内容 底层逻辑选项式 API 和组合式 API体验组合式 API很多钩子组件通信 和 TS 结合开发为什么要用 TS? 正式上手 Vuets 开发给 ref 添加类型标记。ref, reactive, computed 综合代码模板引用类型传值写法 解决问题: 第三方包想要有类…

ACwing—01背包(暴力bfs+dp+递归+记忆化搜索算法)

问题 有 N件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数&#xff0c…

洛谷 P2801 教主的魔法 题解

之前学过 莫队 算法,其运用了分块思想;但是我居然是第一次写纯种的分块题目。 题意 给你一个长度为 n n n 的序列 a a a(一开始 ∀ a i ∈ [ 1 , 1000 ] \forall a_i\in[1,1000] ∀ai​∈[1,1000])。要求执行 q q q 次操作&…

leetcode 75.颜色分类(荷兰国旗问题)

题目描述 题目分析 本题是经典的「荷兰国旗问题」,由计算机科学家 Edsger W. Dijkstra 首先提出。 要想单独解决这道题本身还是很简单的,统计0、1、2的数量然后按顺序赋值,或者手写一个冒泡排序,whatever。 但是在这一题中我们主…

rc4算法简单介绍及实现

0. 介绍 RC4是一种流密码&#xff0c;但因为安全性问题已经被弃用。 1. 算法描述 1.1 初始化 Key为生成的随机密钥&#xff1a;1-256B S为一数组&#xff1a;256B T为辅助数组&#xff1a;keylenB for (int i 0;i < 256;i) {S[i] i;T[i] S[i % keylen]; }1.2 初始化…

OpenEuler20.3 安装 Elasticsearch7.17

1、下载elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.17-linux-x86_64.tar.gz wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.17-linux-x86_64.tar.gz.sha512 shasum -a 512 -c elasticsea…

单元测试知识总结

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是单元测试&#xff1f; 单元测试是指&#xff0c;对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作&#xff0c;这里的…

python爬虫笔记(一)

文章目录 html基础标签和下划线无序列表和有序列表表格加边框 html的属性a标签&#xff08;网站&#xff09;target属性换行线和水平分割线 图片设置宽高width&#xff0c;height html区块——块元素与行内元素块元素与行内元素块元素举例行内元素举例 表单from标签type属性pla…

【mysql】centOS7安装mysql详细操作步骤!—通过tar包方式

【mysql】centOS7安装mysql详细操作步骤&#xff01; linux系统安装mysql版本 需要 root 权限&#xff0c;使用 root 用户进行命令操作。使用tar文件包&#xff0c;安装&#xff0c;gz包也可以但是还需要配置用户&#xff0c;tar包虽然大&#xff0c;但是全啊&#xff01; 1. …

[新能源]新能源汽车快充与慢充说明

接口示意图 慢充接口为交流充电口&#xff08;七孔&#xff09;&#xff0c;快充接口为直流充电口&#xff08;九孔&#xff09;。 引脚说明 上图给的是充电口的引脚图&#xff0c;充电枪的为镜像的。 慢充接口引脚说明 快充接口引脚说明 充电流程 慢充示意图 慢充&…

Android第二次面试总结(项目拷打理论篇)

&#xff08;一&#xff09;理论基础 LiveData 和 ViewModel 是 Android 架构组件中的重要部分&#xff0c;它们在构建响应式、生命周期感知的 Android 应用程序中发挥着关键作用。下面分别介绍它们的原理。 LiveData 原理 1. 概述 LiveData 是一种可观察的数据持有者类&…