Python第三方库 - Pandas库

文章目录

    • 1. Pandas介绍
    • 2. Pandas基础
      • 2.1 引入
      • 2.2 数据结构
        • 2.2.1 Series
        • 2.3 DataFrame
          • 2.3.1 概念
    • 3 Pandas - CSV 文件
      • 3.1 语法
      • 3.2 遇到的问题
    • 4 Pandas - JSON
      • 4.1 语法
    • 参考文档

1. Pandas介绍

概念:

PandasPython 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas 的目标是成为 Python 数据分析实践与实战的必备高级工具,其长远目标是成为最强大、最灵活、可以支持任何语言的开源数据分析工具。经过多年不懈的努力,Pandas 离这个目标已经越来越近了。

2. Pandas基础

2.1 引入

# 引入pandas
import pandas as pd

2.2 数据结构

2.2.1 Series

Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。
Series 由索引(index)和列组成,函数如下:

pandas.Series( data, index, dtype, name, copy)
参数解释
data一组数据( ndarray 类型)
index数据索引标签,如果不指定,默认从 0 开始
dtype数据类型,默认会自己判断
name设置名称
copy拷贝数据,默认为 False

举例:

import pandas as pd1. 创建一个简单的 Series
a = [1, 2, 3] # dtype: int64
myvar = pd.Series(a)
print(myvar)
print(myvar[1]) # 输出索引为1的数值2. 指定索引的方式
a = ["Google", "Runoob", "Wiki"]
myvar = pd.Series(a, index = ["x", "y", "z"]) # dtype: object
print(myvar) # x Google y Runoob z Wiki
print(myvar["y"]) # Runoob3.使用 key/value 对象,类似字典来创建 Series
sites = {1: "Google", 2: "Runoob", 3: "Wiki"} # dtype: object
myvar = pd.Series(sites) 
print(myvar) # 1 Google 2 Runoob 3 Wiki4. 只需要字典中的一部分数据,只需要指定需要数据的索引即可
sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
myvar = pd.Series(sites, index = [1, 2]) 
print(myvar) # 1 Google 2 Runoob (就指定了索引为1和2的数据)

下图只针对例1进行的截图
在这里插入图片描述

2.3 DataFrame

2.3.1 概念

DataFramepandas 库中的一个数据结构,用于存储和操作二维数据。它可以看作是由多个 Series 组成的表格,其中每个 Series 代表一列数据。有几种方法可以构造一个 DataFrame 对象。
一种方法是使用DataFrame的构造函数,可以通过传入一个二维的数据数组、行索引、列索引、数据类型等参数来创建一个 DataFrame 对象。构造函数的具体用法如下 columns=None, dtype=None, copy=False
 
其中:

  1. data参数是一个二维的数据数组,可以是一个列表、字典或其他数据结构
  2. index参数是行索引,可以是一个列表或其他可迭代对象
  3. columns参数是列索引,也可以是一个列表或其他可迭代对象
  4. dtyp参数是数据类型,用于指定每列的数据类型
  5. copy参数用于指定是否复制数据。

3 Pandas - CSV 文件

CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。
CSV 是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。

3.1 语法

  1. 读取 csv
import pandas as pd
df = pd.read_csv('test.csv') # 方式一
df = pd.read_csv('test.csv', engine='python') #方式二
print(df) 
  1. 数据输出

to_string() 用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 … 代替。

print(df) # 0    0  Peter Parker  Boston Celtics       0  ...  25      62     100    3000
print(df.to_string()) # 0    0  Peter Parker  Boston Celtics       0       PG   25      62     100    3000
  1. 数据储存

使用 to_csv() 方法将 DataFrame 存储为 csv 文件

nme = ["Google", "Runoob", "Taobao", "Wiki"]
st = ["www.google.com", "www.runoob.com", "www.taobao.com", "www.wikipedia.org"]
ag = [90, 40, 80, 98]
# 字典
dict = {'name': nme, 'site': st, 'age': ag}
df = pd.DataFrame(dict)
# 保存 dataframe
df.to_csv('1.csv')

在这里插入图片描述
4. 数据处理 - 读取前几行

head( n ) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5

import pandas as pd
df = pd.read_csv('test.csv', engine='python')
print(df.head()) # 默认读取前5行
print('-----------------------')
print(df.head(10)) # 读取前10行
  1. 数据处理 - 读取末尾几行

tail( n ) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN

import pandas as pd
df = pd.read_csv('test.csv', engine='python')
print(df.tail()) # 默认末尾5行
print('-----------------------')
print(df.tail(10)) # 读取末尾10行
  1. 返回表格基本信息

info() 方法返回表格的一些基本信息

import pandas as pd
df = pd.read_csv('test.csv', engine='python')
print(df.info())输出结果如下:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 51 entries, 0 to 50  # 51行 编号0-50 类似于数组index
Data columns (total 9 columns):  # 9列数据#   Column    Non-Null Count  Dtype  # 各列的数据类型
---  ------    --------------  ----- 0   No        51 non-null     int64 1   Name      51 non-null     object2   Team      51 non-null     object3   Number    51 non-null     int64 4   Position  51 non-null     object5   Age       51 non-null     int64 6   Height    51 non-null     int64 7   Weight    51 non-null     int64 8   Salary    51 non-null     int64 
dtypes: int64(6), object(3) # 类型

3.2 遇到的问题

读取csv出现了报错,如下:

read_csv()的参数中加入engine = "python"即可
 
pd.read_csv('my.csv', engine='python')

Traceback (most recent call last):File "D:\pycharm\test.py", line 2, in <module>df = pd.read_csv('my.csv')^^^^^^^^^^^^^^^^^^^^^File "D:\pycharm\venv\Lib\site-packages\pandas\io\parsers\readers.py", line 912, in read_csvreturn _read(filepath_or_buffer, kwds)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "D:\pycharm\venv\Lib\site-packages\pandas\io\parsers\readers.py", line 577, in _readparser = TextFileReader(filepath_or_buffer, **kwds)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "D:\pycharm\venv\Lib\site-packages\pandas\io\parsers\readers.py", line 1407, in __init__self._engine = self._make_engine(f, self.engine)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "D:\pycharm\venv\Lib\site-packages\pandas\io\parsers\readers.py", line 1679, in _make_enginereturn mapping[engine](f, **self.options)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "D:\pycharm\venv\Lib\site-packages\pandas\io\parsers\c_parser_wrapper.py", line 93, in __init__self._reader = parsers.TextReader(src, **kwds)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "pandas\_libs\parsers.pyx", line 557, in pandas._libs.parsers.TextReader.__cinit__
pandas.errors.EmptyDataError: No columns to parse from file

4 Pandas - JSON

4.1 语法

  1. 读取 json 文件
#  test.json
[{"id": "S001","name": "Lisa","age": 18,"hobby": "sing and dance"},{"id": "S002","name": "Rose","age": 17,"hobby": "draw pictures"},{"id": "S003","name": Jack"","age": 18,"likes": "play basketball"}
]import pandas as pd
df = pd.read_json('test.json')
print(df.to_string())
print('-----------------------')
print(df)# 输出相同 拿其中一个举例id  name  age            hobby
0  S001  Lisa   18   sing and dance
1  S002  Rose   17    draw pictures
2  S003  Jack   18  play basketball 
  1. 处理 json 数据
import pandas as pd
data = [{"id": "S001","name": "Lisa","age": 18,"hobby": "sing and dance"},{"id": "S002","name": "Rose","age": 17,"hobby": "draw pictures"},{"id": "S003","name": "Jack","age": 18,"hobby": "play basketball"}
]
df = pd.DataFrame(data)
print(df)
  1. 内嵌的 json 数据
import pandas as pd
data = [{"id": "S001","name": "Lisa","age": 18,"hobby": [{"mostlike" : "read books","morelike" : "sing","like" : "dance"}]},{"id": "S002","name": "Rose","age": 17,"hobby": "draw pictures"},{"id": "S003","name": "Jack","age": 18,"hobby": "play basketball"}
]
df = pd.DataFrame(data)
print(df)# 输出id  name  age                                              hobby
0  S001  Lisa   18  [{'mostlike': 'read books', 'morelike': 'sing'...
1  S002  Rose   17                                      draw pictures
2  S003  Jack   18                                    play basketball
  1. 内嵌数据完整 解析
需要遇到一个方法: json_normalize()test.json
[{"id": "S001","name": "Lisa","age": 18,"hobby": [{"mostlike" : "read books","morelike" : "sing","like" : "dance"}]},{"id": "S002","name": "Rose","age": 17,"hobby": [{"mostlike" : "draw","morelike" : "calligraphy","like" : "mountain climbing"}]},{"id": "S003","name": "Jack","age": 18,"hobby": [{"mostlike" : "play basketball","morelike" : "play volleyball","like" : "play football"}]}
]import pandas as pd
import json# 使用 Python JSON 模块载入数据
with open('test.json','r') as f:data = json.loads(f.read())# 展平内嵌数据
df_nested_list = pd.json_normalize(data, record_path =['hobby'])
print(df_nested_list)输出:mostlike         morelike               like
0       read books             sing              dance
1             draw      calligraphy  mountain climbing
2  play basketball  play volleyball      play football# 展平全部数据 用 meta 这个参数
df_nested_list = pd.json_normalize(data,record_path =['hobby'],meta=['id', 'name' , 'age']
)
print(df_nested_list)输出:mostlike         morelike               like    id  name age
0       read books             sing              dance  S001  Lisa  18
1             draw      calligraphy  mountain climbing  S002  Rose  17
2  play basketball  play volleyball      play football  S003  Jack  18

参考文档

[1] Pandas教程
[2] 菜鸟教程

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

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

相关文章

Tomcat日志中文乱码

修改安装目录下的日志配置 D:\ProgramFiles\apache-tomcat-9.0.78\conf\logging.properties java.util.logging.ConsoleHandler.encoding GBK

Spring Security6 最新版配置该怎么写,该如何实现动态权限管理

Spring Security 在最近几个版本中配置的写法都有一些变化&#xff0c;很多常见的方法都废弃了&#xff0c;并且将在未来的 Spring Security7 中移除&#xff0c;因此又补充了一些新的内容&#xff0c;重新发一下&#xff0c;供各位使用 Spring Security 的小伙伴们参考。 接下…

若依框架浅浅介绍

由若依官网所给介绍可知 1、文件结构介绍 在ruoyi-admin的pom.xml文件中引入了ruoyi-framework、ruoyi-quartz和ruoyi-generatior模块&#xff0c;在ruoyi-framework的pom.xml文件中引入了ruoyi-system模块。 2、技术栈介绍 前端&#xff1a;Vue、Element UI后端&#xff1a…

面试热题(缺失的第一个正数)

给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 尝试的路途是痛苦的&#xff0c;不断的尝试新方法&#xff0c;错何尝…

flask-----初始项目架构

1.初始的项目目录 -apps 包 ------存放app -user文件夹 -------就是一个app -models.py --------存放表模型 -views.py -------存放主代码 -ext包 -init.py -------实例化db对象 -manage.py -----运行项目的入口 -setting.py -----配置文件 2.各文件内容 manage…

vue里搜索框实现防抖功能

进来调用一个闭包函数debounce()&#xff0c;赋值给一个变量debounceFunc&#xff0c;&#xff08;包闭的功能就是说里面的变量timer和参数一直驻留在函数里面&#xff09; input事件调用一个函数debounceFunc&#xff08;&#xff09;&#xff0c;并且传一个回调searchs函数&a…

创建maven的Springboot项目出现错误:Cannot access alimaven

创建maven的Springboot项目出现错误&#xff1a;Cannot access alimaven 1&#xff09;问题2) 分析问题3&#xff09;解决问题 1&#xff09;问题 创建maven的Springboot项目出现错误&#xff1a; Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/p…

【Spring】深入探索 Spring AOP:概念、使用与实现原理解析

文章目录 前言一、初识 Spring AOP1.1 什么是 AOP1.2 什么是 Spring AOP 二、AOP 的核心概念2.1 切面&#xff08;Aspect&#xff09;2.2 切点&#xff08;Pointcut&#xff09;2.3 通知&#xff08;Advice&#xff09;2.4 连接点&#xff08;Join Point&#xff09; 三、Sprin…

【Linux进程篇】环境变量

【Linux进程篇】环境变量 目录 【Linux进程篇】环境变量基本概念常见环境变量查看环境变量方法测试PATH测试HOME测试SHELL和环境变量相关的命令环境变量的组织方式通过代码如何获取环境变量命令行参数命令行第三个参数通过第三方变量environ获取 本地变量通过系统调用获取或设置…

[HDLBits] Exams/m2014 q4b

Implement the following circuit: module top_module (input clk,input d, input ar, // asynchronous resetoutput q);always(posedge clk or posedge ar) beginif(ar)q<1b0;elseq<d;end endmodule

组合模式(C++)

定义 将对象组合成树形结构以表示部分-整体’的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性(稳定)。 应用场景 在软件在某些情况下&#xff0c;客户代码过多地依赖于对象容器复杂的内部实现结构&#xff0c;对象容器内部实现结构(而非抽象接口)的变化…

虹科干货 | 化身向量数据库的Redis Enterprise——快速、准确、高效的非结构化数据解决方案!

用户期望在他们遇到的每一个应用程序和网站都有搜索功能。然而&#xff0c;超过80%的商业数据是非结构化的&#xff0c;以文本、图像、音频、视频或其他格式存储。Redis Enterprise如何实现矢量相似性搜索呢&#xff1f;答案是&#xff0c;将AI驱动的搜索功能集成到Redis Enter…

项目难点:解决IOS调用起软键盘之后页面样式布局错乱问题

需求背景 &#xff1a; 开发了一个问卷系统重构项目&#xff0c;刚开始开发的为 PC 端&#xff0c;其中最头疼的一点无非就是 IE 浏览器的兼容适配性问题&#xff1b; 再之后项目经理要求开发移动端&#xff0c;简单的说就是写 H5 页面&#xff0c;到时候会内嵌在 App 应用或办…

[数据分析与可视化] Python绘制数据地图5-MovingPandas绘图实例

MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库&#xff0c;用于处理移动物体的轨迹数据。关于MovingPandas的使用见文章&#xff1a;MovingPandas入门指北&#xff0c;本文主要介绍三个MovingPandas的绘图实例。 MovingPandas官方仓库地址为&#xff1a;mo…

Vue使用jspdf和html2canvas组件库结合导出PDF文件

效果图&#xff1a; 1、安装依赖&#xff1a; npm install html2canvas --save npm install jspdf --save 或 yarn add html2canvas --save yarn add jspdf --save 2、封装全局调用方法&#xff1a;this.$exportPDF(#id,文件名) 新建js文件&#xff1a;/utils/html2Pdf.js&am…

java spring cloud 企业工程管理系统源码+二次开发+定制化服务 em

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显…

释放马氏距离的力量:用 Python 探索多元数据分析

一、说明 马哈拉诺比斯距离&#xff08;Mahalanobis Distance&#xff09;是一种测量两个概率分布之间距离的方法。它是基于样本协方差矩阵的函数&#xff0c;用于评估两个向量之间的相似程度。Mahalanobis Distance考虑了数据集中各个特征之间的协方差&#xff0c;因此比欧氏距…

判断自己网络所在的NAT类型

文章目录 各NAT类型介绍软件准备流程 各NAT类型介绍 NAT0: OpenInternet&#xff0c;没有经过NAT地址转换&#xff0c;公网IP NAT1: Full Cone NAT&#xff0c;动态家宽可以达到最优的状态&#xff0c;外网设备可以主动发信息给NAT1网络内的设备。 NAT2: Address-Restricted C…

uniapp 自定义手机顶部状态栏不生效问题

想要的效果想淘宝一样&#xff0c;底色覆盖到手机顶部&#xff0c;找了两天都没找到原因&#xff0c;过程很艰苦&#xff0c;直接上结果吧 项目是后来接手的&#xff0c;最终原因出在这&#xff0c; "immersed" : false>设置为 true 就可以了&#xff0c;沉浸式样…

Spring(三):Spring中Bean的生命周期和作用域

前言 在 Spring 中&#xff0c;那些组成应用程序的主体及由 Spring IOC 容器所管理的对象&#xff0c;被称之为 bean。简单地讲&#xff0c;bean 就是由 IOC 容器初始化、装配及管理的对象&#xff0c;除此之外&#xff0c;bean 就与应用程序中的其他对象没有什么区别了。而 b…