python—pandas基础(1)

文章目录

    • 安装
    • 设定系统环境
    • Pandas的主要数据结构
    • Series对象创建
      • 使用列表创建
      • 属性values和index
      • 指定index
      • 使用list列表指定index
      • 传入字典创建,默认将key作为index
      • 将一个标量与index对象一起传入创建
    • DataFrame对象创建
      • 创建DataFrame对象
      • values index columns属性
      • 列表创建
      • 索引columns的使用
      • 二维数组指定columns和index创建
    • Pandas中的Index
    • 导入Excel文件
      • 导入.xlsx文件时,指定导入哪个Sheet
      • 导入.xlsx文件时,通过index_col指定行索引
      • 导入.xlsx文件时,通过header指定列索引
      • 导入.xlsx文件时,通过usecols指定导入列
    • 导入csv文件
      • 导入.csv文件,文件编码格式是gbk
      • 导入.csv文件,指明分隔符
    • 导入txt文件
      • 导入.txt文件
    • 读取数据库数据
      • 配置 MySQL 连接引擎
      • 读取数据表
    • 保存数据
      • 保存数据至外部文件
    • 保存数据至数据库
    • 了解数据
      • head()与 tail()
      • info()
      • shape
      • describe()

Python中的Pandas是一个强大的数据分析和处理库,它提供了快速、灵活和表达式丰富的数据结构,旨在使“关系”或“标签”数据的处理工作变得既简单又直观。Pandas非常适合于金融、统计分析、社会科学以及许多其他领域的数据处理。
在这里插入图片描述
使用 Pandas 包完成数据读入、数据清理、数据准备、图表呈现等工作,为继续学习数据建模和数据挖掘打下坚实基础。

安装

pip install pandas

设定系统环境

import pandas as pd
#设定自由列表输出最多为 10 行
pd.options.display.max_rows = 10
# 显示当前 Pandas 版本号
pd.__version__

Pandas的主要数据结构

  1. Series:一维的、同类型的数据结构,可以存储任何数据类型(整数、字符串、浮点数、Python对象等)。Series是带有索引的数组,索引可以是整数或其他数据类型(如字符串)。
  2. DataFrame:二维的、表格型的数据结构,可以看作是由多个Series组成的字典(共用同一个索引)。DataFrame既有行索引也有列索引,可以被看作是一个共享相同索引的Series的集合。

Series对象创建

在这里插入图片描述
Series:一维数组,与Numpy中的一维array类似。它是一种类似于一维数组的对象,是由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series 对象。用值列表生成 Series 时,Pandas 默认自动生成整数索引 。

使用列表创建

import pandas as pd
data=pd.Series([4,3,5,6,1])
data

pandas中两个重要的属性 values 和index,values:是Series对象的原始数据。index:对应了Series对象的索引对象。

属性values和index

data.values
data.index

指定index

data=pd.Series([5,4,6,3,1],index=['one','two','three','four','five'])

使用list列表指定index

data=pd.Series([4,3,2,1],index=list('abcd'))

传入字典创建,默认将key作为index

population_dict={'sh':2800,'bj':3000,'gz':1500,'sz':1200}
population_series=pd.Series(population_dict)
#如果存在取交集
sub_series=pd.Series(population_dict,index=['bj','sh'])
#如果不存在则值为NaN
sub_series=pd.Series(population_dict,index=['bj','xa'])

将一个标量与index对象一起传入创建

data=pd.Series(10,index=list('abcd'))

DataFrame对象创建

在这里插入图片描述
DataFrame 是 Pandas 中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame 即有行索引也有列索引,可以被看做是由 Series 组成的字典。将两个series对象作为dict的value传入,就可以创建一个DataFrame对象。

创建DataFrame对象

population_dict={'beijing':3000,'shanghai':1200,'guangzhou':1800}
area_dict={'beijing':300,'shanghai':180,'guangzhou':200}
import pandas as pd
population_series=pd.Series(population_dict)
area_series=pd.Series(area_dict)
citys=pd.DataFrame({'area':area_series,'population':population_series})

values index columns属性

citys.index
citys.values
citys.columns

列表创建

population_dict={'beijing':3000,'shanghai':1200,'guangzhou':1800}
area_dict={'beijing':300,'shanghai':180,'guangzhou':200}
data=pd.DataFrame([population_dict,area_dict])
#添加index属性
data=pd.DataFrame([population_dict,area_dict],index=['population','area'])

索引columns的使用

population_series=pd.Series(population_dict)
pd.DataFrame(population_series,columns=['population'])

二维数组指定columns和index创建

pd.DataFrame(np.random.randint(0,10,(3,2)),columns=list('ab'),index=list('efg'))

Pandas中的Index

在这里插入图片描述
Pandas中的Index,其实是不可变的一维数组

ind=pd.Index([3,4,5,6,7])
#根据下标获取值
ind[3]  
#切片获取值
ind[::2]
#有ndim  shap  dtype  size属性
#但不能进行修改
ind[3]=20

导入Excel文件

在这里插入图片描述
使用read_excel()方法导入文件,首先要指定文件的路径。(注意:使用Pandas模块操作Excel时候,需要安装openpyxl)

import pandas as pd
pd.read_excel('stu_data.xlsx')

导入.xlsx文件时,指定导入哪个Sheet

pd.read_excel('stu_data.xlsx',sheet_name='Target')
pd.read_excel('stu_data.xlsx',sheet_name=0)

导入.xlsx文件时,通过index_col指定行索引

pd.read_excel('stu_data.xlsx',sheet_name=0,index_col=0)

导入.xlsx文件时,通过header指定列索引

pd.read_excel('stu_data.xlsx',sheet_name=0,header=1)
pd.read_excel('stu_data.xlsx',sheet_name=0,header=None)

有时候本地文件的列数太多,而我们又不需要那么多列时,我们就可以通过设置usecols参数来指定要导入的列。

导入.xlsx文件时,通过usecols指定导入列

pd.read_excel('stu_data.xlsx',usecols=[1,2,3])

导入csv文件

在这里插入图片描述
导入csv文件时除了指明文件路径,还需要设置编码格式。Python中用得比较多的两种编码格式是UTF-8和gbk,默认编码格式是UTF-8。我们要根据导入文件本身的编码格式进行设置,通过设置参数encoding来设置导入的编码格式。

导入.csv文件,文件编码格式是gbk

pd.read_csv('stu_data.csv',encoding='gbk')

用分隔符号进行分隔。常用的分隔符除了逗号、空格,还有制表符(\t)。

导入.csv文件,指明分隔符

df=pd.read_csv("stu_data.csv",encoding='gbk',sep=' ')
df1=pd.read_csv('stu_data.csv',encoding='gbk',sep=',')

导入txt文件

在这里插入图片描述
导入.txt文件用得方法是read_table(),read_table()是将利用分隔符分开的文件导入。DataFrame的通用函数。它不仅仅可以导入.csv文件,还可以导入.txt文件。

导入.txt文件

pd.read_table('test_data.txt',encoding='utf-8',sep='\t')

读取数据库数据

在这里插入图片描述

配置 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
emp',con=conn)
tab1 = pd.read_sql('select count(*) from
emp',con=conn)
sal_start = 150
end_start =3000
tab1 =pd.read_sql(f'select * from emp where sal between {sal_start} and {end_start}',con=conn,index_col = ['empno'])

保存数据

在这里插入图片描述

保存数据至外部文件

df.to_csv(filepath_or_buffer :要保存的文件路径sep =:分隔符columns :需要导出的变量列表header = True :指定导出数据的新变量名,可直接提供 listindex = 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 Sheetl1 :要保存的表单名称
)
df2.to_excel('temp.xlsx', index = False,sheet_name = data)

保存数据至数据库

在这里插入图片描述

df.to_sql(name :将要存储数据的表名称con : 连接引擎名称if_exists = 'fail' :指定表已经存在时的处理方式fail :不做任何处理(不插入新数据)replace :删除原表并重建新表append :在原表后插入新数据index = True :是否导出索引 )
#pip install sqlalchemy
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)

了解数据

在这里插入图片描述

head()与 tail()

当数据表中包含了数据行数过多时,而我们又想看一下每一列数据都是什么样的数据时,就可以把数据表中前几行或后几行数据显示出来进行查看head()方法返回前 n 行(观察索引值),显示元素的数量默认是 5,但可以传递自定义数值tail()方法返回后 n 行观察索引值),显示元素的数量默认是 5,但可以传递自定义数值。

#浏览前几条记录
df.head()
df.head(10)
#浏览最后几条记录
df.tail()

info()

熟悉数据的第一点就是看下数据的类型,不同的数据类型的分析思路是不一样的,比如说数值类型的数据就可以求均值,但是字符类型的数据就没法求均值了。info()方法查看数据表中的数据类型,而且不需要一列一列的查看,info()可以输出整个表 中所有列的数据类型。

df.info()

shape

熟悉数据的第二点就是看下数据表的大小,即数据表有多少行,多少列 。shape()方法会以元组的形式返回行、列数。注意 shape 方法获取行数和列数时不会把索引和列索引计算在内。

df.shape

describe()

熟悉数据的第三点就是掌握数值的分布情况,即均值是多少,最值是多少,方差及分位数分别是多少 。describe()方法就是可以就可以获取所有数值类型字段的分布值。

df.describe()

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

如何查看cpu架构,查看CPU架构的方法

查看CPU架构的方法有很多,具体取决于你使用的操作系统。以下是一些常见的操作系统中查看CPU架构的方法: Windows查看CPU架构的方法 使用系统信息工具 按 Win R 打开运行窗口。输入 msinfo32 并按 Enter。在系统信息窗口中,找到“处理器”一…

WebGoC题解(14) 151.(2017dloi小乙)第5题 巧克力甜度(sweet)

题目描述 妈妈买了n颗甜度不同的巧克力,规定小C只能吃最大甜度之和是S。 例如:有5颗巧克力,s6,每个的甜度分别为: 4 2 3 1 1,那么小C最多可以吃3颗。 请问你能帮小C计算一下最多能吃多少颗巧克力吗? 输入格…

谁说只有车载HMI界面?现在工业类的HMI界面UI也崛起了

谁说只有车载HMI界面?现在工业类的HMI界面UI也崛起了 引言 艾斯视觉作为行业ui设计和前端开发领域的从业者,其观点始终认为:工业自动化和智能化水平不断提高,人机界面(Human-Machine Interface,简称HMI&a…

普中51单片机:蜂鸣器的简单使用(十一)

文章目录 引言蜂鸣器的分类工作原理无源蜂鸣器压电式蜂鸣器:电磁式蜂鸣器: 电路符号及应用代码演示——无源蜂鸣器 引言 蜂鸣器是一种常见的电子音响器件,广泛应用于各种电子产品中。它们能够发出不同频率的声音,用于警报、提醒、…

Multi Range Read与Covering Index是如何优化回表的?

上篇文章末尾我们提出一个问题:有没有什么办法可以尽量避免回表或让回表的开销变小呢? 本篇文章围绕这个问题提出解决方案,一起来看看MySQL是如何优化的 回表 为什么会发生回表? 因为使用的索引并没有整条记录的所有信息&…

Mysql索引解析

索引 1.创建索引的SQL ALTER TABLE tbl_name ADD PRIMARY KEY (col_list); // 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。ALTER TABLE tbl_name ADD UNIQUE index_name (col_list); // 这条语句创建索引的值必须是唯一的。ALTER T…

加入到「圆心学堂」知识星球后,你将获得些什么呢?

大家好呀,我的知识星球上线啦!加入到「圆心学堂」知识星球后,您将获得些什么呢? 1.共50套原创精品图文教程电子书,包含1000篇文章,涵盖主流框架、中间件、分布式和微服务等领域,紧跟行业趋势&a…

怎么培养政府机关的公文写作能力?

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量 公文写作千万不能零起步,你有时间慢慢学习,但领导哪有时间等你慢慢进步啊。 如果问写公文有什么捷径,那就不得不靠「AI写作工具…

XLua 原理分析 三

前面已经介绍了Lua与C#的基础通信原理,和Wrap中间文件的作用。有了前面2篇的基础,大概已经能搞清这块的原理。 为了加深对这块的印象,这里开始正式分析Xlua中的Lua和C#的通信。 一、Lua如何调用CS的过程 lua的初始化代码: pri…

python基础巩固

基本数据类型 可以用isinstance来判断 a111 isinstance(a,int) True数值运算: >>> 2 / 4 # 除法,得到一个浮点数 0.5 >>> 2 // 4 # 除法,得到一个整数 0 >>> 17 % 3 # 取余 2Python 字符串不能被改变。向一个…

vuex学习day02-state状态、严格模式(strict)、mutations、辅助函数mapMutations、actions

4、state状态 (1)作用:提供共享数据 (2)步骤: 1)找到仓库,通过state提供共享数据 报错1?: 解决方式: 找到.eslintrc.js文件,添加一…

LabVIEW操作系列1

系列文章目录 我的记录: LabVIEW操作系列 文章目录 系列文章目录前言五、特殊用法5.1 取值范围表示5.2 对输入值取值范围进行限定5.3 控制多个While循环停止运行。5.4 获取按钮上的文本5.5 获取按钮上的文本【进阶】 六、使用步骤1.引入库2.读入数据 七、其余功能7.…

python+barcode快速生成条形码3-PyQt6微界面(电商条形码生成工具)

背景 继续上一片文章的电商测试小工具,进行了优化 需求 生成条形码之后,可以通过界面方式读取条形码的图片 支持当个条形码快速生成,以及批量导入 csv文件导入 添加微界面图像按钮,方便操作,更像是在实现测试工具的…

AI在Facebook的应用:预见智能化社交的新前景

在数字化时代,社交媒体平台已成为我们生活的重要组成部分,而人工智能(AI)的快速发展正推动着这些平台向更智能、更个性化的方向发展。Facebook,作为全球最大的社交网络平台之一,正不断探索和应用AI技术&…

基于JAVA+SpringBoot+Vue的oa系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、SpringCloud、Layui、Echarts图表、Nodejs、爬…

x64dbg反汇编技术入门学习笔记

EIP EIP是程序下一次要运行地方 寄存器 临时存放数据,按照Intel规定去存放 window API 微软提供的,用户可以操作系统的一些接口,以函数的形式体现 杀软是如何查杀恶意的 镜像地址 实际地址 实际运行后代码的地址 查外部调用段就可以定位到.rdat…

Android Kotlin:协程

目录: 1)协程是什么? 2)协程和线程的关系? 3)协程如何使用?切线程是什么 4)挂起函数是什么? 5)withContext和lanuch的区别在哪里? 6)…

Jenkins的相关概述和安装

Jenkins 1.什么是jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。耗内存max 2. 为什么使用Jenkins 拉取、编译、打包…

【初阶数据结构】9.二叉树(4)

文章目录 5.二叉树算法题5.1 单值二叉树5.2 相同的树5.3 另一棵树的子树5.4 二叉树遍历5.5 二叉树的构建及遍历 6.二叉树选择题 5.二叉树算法题 5.1 单值二叉树 点击链接做题 代码: /*** Definition for a binary tree node.* struct TreeNode {* int val;* …

探索 Electron:构建用户友好的登录页面流程

Electron是一个开源的桌面应用程序开发框架,它允许开发者使用Web技术(如 HTML、CSS 和 JavaScript)构建跨平台的桌面应用程序,它的出现极大地简化了桌面应用程序的开发流程,让更多的开发者能够利用已有的 Web 开发技能…