Python第三方库 - Pandas库

news2024/12/28 3:48:05

文章目录

    • 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 遇到的问题
    • 参考文档

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 pd

1. 创建一个简单的 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"]) # Runoob

3.使用 key/value 对象,类似字典来创建 Series
sites = {1: "Google", 2: "Runoob", 3: "Wiki"} # dtype: object
myvar = pd.Series(sites) 
print(myvar) # 1 Google 2 Runoob 3 Wiki

4. 只需要字典中的一部分数据,只需要指定需要数据的索引即可
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     object
 2   Team      51 non-null     object
 3   Number    51 non-null     int64 
 4   Position  51 non-null     object
 5   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_csv
    return _read(filepath_or_buffer, kwds)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\pycharm\venv\Lib\site-packages\pandas\io\parsers\readers.py", line 577, in _read
    parser = 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_engine
    return 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

参考文档

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

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

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

相关文章

【Vue-Router】重定向

First.vue <template><h1>First Seciton</h1> </template>Second.vue&#xff0c;Third.vue代码同理 UserSettings.vue <template><h1>UserSettings</h1><router-link to"/settings/children1">children1</ro…

41、可靠传输——停等ARQ

前面两节内容我们学习了传输层的基本概况的一些知识&#xff0c;包括传输层在TCP/IP协议栈中负责的任务、传输层的两大协议&#xff0c;以及端口号、套接字等一些基本的概念。从这一节开始&#xff0c;我们将开启两大协议中TCP协议的学习。 但是&#xff0c;经过之前的学习&am…

企望制造ERP系统 RCE漏洞复现(HW0day)

0x01 产品简介 企望制造纸箱业erp系统由深知纸箱行业特点和业务流程的多位IT专家打造&#xff0c;具有国际先进的管理方式&#xff0c;将现代化的管理方式融入erp软件中&#xff0c;让企业分分钟就拥有科学的管理经验。 erp的功能包括成本核算、报价定价、订单下达、生产下单、…

上传excel文件

文件上传&#xff0c;其实就是用el-upload组件来实现上传&#xff0c;只是换了样式&#xff0c;和图片上传一样 <el-form-item label"选择文件"><el-input placeholder"请选择文件" v-model"form.file" disabled style"width: 45…

自定义批量修改图像位深度

什么是图像位深度&#xff1f;&#xff1f;&#xff1f; 图像位深度(Bit Depth)是指图像中每个像素所占的比特数,它决定了图像能够表示的颜色数量和亮度层级。 简单来说: 位深度越高,每个像素所能表示的颜色数和亮度等级越多。位深度越低,每个像素所能表示的颜色数和亮度等级…

【设备树笔记整理4】内核对设备树的处理

1 从源头分析_内核head.S对dtb的简单处理 1.1 bootloader向内核传递的参数 &#xff08;1&#xff09;bootloader启动内核时&#xff0c;会设置r0&#xff0c;r1&#xff0c;r2三个寄存器&#xff1a; r0一般设置为0;r1一般设置为machine_id (在使用设备树时该参数没有被使用…

809协议nodejs编写笔记(还在更新)

一、总体流程 数据首先通过receiver接受层接收&#xff0c;去掉标识头和标识尾&#xff1b;再进入depacker解包层进行解包&#xff0c;把标识头分解出来并解析&#xff1b;之后发给handler处理层根据不同的消息id选择使用不同的业务逻辑&#xff1b;如果有应答&#xff0c;则通…

Vue2(组件开发)

目录 前言一&#xff0c;组件的使用二&#xff0c;插槽slot三&#xff0c;refs和parent四&#xff0c;父子组件间的通信4.1&#xff0c;父传子 &#xff1a;父传子的时候&#xff0c;通过属性传递4.2&#xff0c;父组件监听自定义事件 五&#xff0c;非父子组件的通信六&#x…

JL701N编译后查看内存使用情况

编译之后&#xff0c;可以在 cpu/br28/tools/sdk.map 中查看实际的使用情况.

MySQL 账号权限

mysql 在安装好后&#xff0c;默认是没有远端管理账号。 一、账号管理 1. 查看账号列表 MySQL用户账号和信息存储在名为 mysql 的数据库中。一般不需要直接访问 mysql 数据库和表&#xff0c;但有时需要直接访问。例如&#xff0c;查看数据库所有用户账号列表时。 USE mysql; …

第G2周:人脸图像生成(DCGAN)

&#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同学啊] 1. DCGAN原理 深度卷积对抗网络&#xff08;Deep Convolutional Generative Adversarial Networks, DCGAN&#…

Python的十二道编程题,码住战胜一切

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 一、计算文件大小 import os def get_size(path):size 0l [path]while l:path l.pop()lst os.listdir(path)for name in lst:son_path os.path.join(path,name)if os.path.isfile(son_path):size os.path.getsize(son_…

个人博客系统测试报告

文章目录 一、功能测试1.编写测试用例2.总结测试后发现的BUG 二、UI自动化测试0.搭建测试环境1. 创建公共类2.注册页面UI自动化测试用例编写3.登录页面UI自动化测试用例编写4.用户博客列表页面自动化测试5. 修改个信息页面6. 文章编辑页面7. 设置密保问题发现bug 8. 所有用户文…

QTreeView显示多级多列目录

效果图&#xff1a; 头文件&#xff1a; QStandardItemModel *m_treeMode;源文件 m_treeMode new QStandardItemModel(0,1,this);ui->treeView->setModel(m_treeMode);//控制第一列节点个数int mainLevel 3;for (int i 0; i < mainLevel; i) {QList<QStandar…

【设计模式】非GOF的常见设计模型

结构型模式 系列综述&#xff1a; 来源&#xff1a;该系列是主要参考《大话设计模式》和《设计模式(可复用面向对象软件的基础)》&#xff0c;其他详细知识点拷验来自于各大平台大佬的博客。 总结&#xff1a;设计模式汇总篇 如果对你有用&#xff0c;希望关注点赞收藏一波。 文…

无需停服!PostgreSQL数据迁移工具-NineData

PostgreSQL 是一种备受开发者和企业青睐的关系型数据库&#xff0c;其丰富的数据类型、地理空间负载和强大的扩展能力等特性使其备受欢迎。然而&#xff0c;在企业使用 PostgreSQL 承载应用的过程中&#xff0c;由于业务需要上云、跨云、下云、跨机房迁移、跨地域迁移、数据库版…

C语言学习笔记---操作符详解

C语言程序设计笔记---012 C语言操作符1、算数操作符1.1、算术操作符例程 2、移位操作符2.1、移位操作符例程12.2、移位操作符例程22.3、移位操作符例程3 3、位操作符3.1、位操作符例程13.2、位操作符例程23.3、位操作符例程3 --按位与&1扩展3.4、位操作符例程4 --按位异或^…

使用SpringAop切面编程通过Spel表达式实现Controller权限控制

目录 参考一、概念SpEL表达式 二、开发引入包定义注解定义切面定义用户上下文 三、测试新建Service在方法上注解新建Service在类上注解运行 参考 SpringBoot&#xff1a;SpEL让复杂权限控制变得很简单 一、概念 对于在Springboot中&#xff0c;利用自定义注解切面来实现接口…

LVGL学习笔记 30 - List(列表)

目录 1. 添加文本 2. 添加按钮 3. 事件 4. 修改样式 4.1 背景色 4.2 改变项的颜色 列表是一个垂直布局的矩形&#xff0c;可以向其中添加按钮和文本。 lv_obj_t* list1 lv_list_create(lv_scr_act());lv_obj_set_size(list1, 180, 220);lv_obj_center(list1); 部件包含&…

Linux命令200例:adduser用于创建新用户

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…