python之Pandas

news2024/9/23 19:20:02

1.Pandas简介

Pandas 是 Python 语言的一个扩展程序库,用于数据分析。

Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。

Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。

Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。

Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。

Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。

安装方式:

pip install pandas
#查看版本
import pandas as pd
pd.__version__

2. Pandas 中数据结构

2.1 Series

Series结构,也称 Series序列,是Pandas常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值具有对应关系。

标签不必是唯一的,但必须是可哈希类型。该对象既支持基于整数的索引,也支持基于标签的索引,并提供了许多方法来执行涉及索引的操作。ndarray 的统计方法已被覆盖,以自动排除缺失的数据(NaN)。

Series可以保存任何数据类型,比如整数、字符串、浮点数、Python对象等,它的标签默认为整数,从0开始依次递增。

Series类似于表格中的一个列(column),类似于一个一维数组:

格式

pandas.Series(data,index,dtype,name,copy)

参数说明:

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

代码示例

a = [1,2,3]
my_var = pd.Series(a,index=['a','b','c'],dtype=float,name='myvar')
print(my_var)

也可以使用key/value对象创建Series:

dict1 = {'aa':'a','bb':'b','cc':'c'}
myvar = pd.Series(dict1,index = ['aa','bb','cc'])
myvar
# aa    a
# bb    b
# cc    c
# dtype: object

2.2 DataFrame

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值)。

DataFrame 既有行索引也有列索引,因此它可以被看做是:共用一个索引,由Series组成的字典。

在这里插入图片描述

格式

pandas.DataFrame(data,index,coolumns,dtype,copy)

参数说明

  • data:一组数据(ndarray、series, map, lists, dict 等类型)。
  • index:索引值,或者可以称为行标签。
  • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
  • dtype:数据类型。
  • copy:拷贝数据,默认为 False。

代码示例

import pandas as pd
data = [
    ['Google',1],
    ['Baidu',2],
    ['Wiki',3],
]
df = pd.DataFrame(data,columns=['Name','Count'])
print(df)
#      Name  Count
# 0  Google      1
# 1   Baidu      2
# 2    Wiki      3

3. Pandas 处理CSV文件

CSV(Comma-Separated Values,以逗号为分割值,有时也称为字符分割值,因为分割字符也可以不是逗号,其文件以纯文本形式存储表格数据(数字和文本))。

CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。

代码演示

df = pd.read_csv('anjuke.csv')
print(df)

如果不使用df.to_string(),则输出结果为数据前面5行,和后面5行,而中间部分则以… 代替,如图所示:

在这里插入图片描述

因此,需要全部显示需要使用:df.to_string()

如果需要将DataFrame转换为.csv文件,可以调用:to_csv()

name = ['xiaofang','xiaoming','xiaohua']
address = ['beijin','tianjin','xian']
ag = [90,80,70]

# 组成字典
dict1 = {'Name':name,'Address':address,'Ag':ag}
df = pd.DataFrame(dict1)

#
print(df)
print(df.Name[0])
#保存dataframe
df.to_csv('my.csv') 

3.1 查看CSV数据

3.1.1 head(n):读取前面的n行,如果不填参数,默认返回前5行
df = pd.read_csv('anjuke.csv')
print(df.head())
print(df.head(6))
3.1.2 head(n):读取尾部的后n行,如果不填参数,默认返回后5行

如果是空行,各个字段的值都返回NaN

df = pd.read_csv('anjuke.csv')
print(df.head())
print(df.head(6))
3.1.3 info():返回表格的一些基本信息
import pandas as pd
df = pd.read_csv('anjuke.csv')
print(df.info())

4.Pandas 处理JSON文件

JSON(JavaScript Object Notation,JavaScript对象表示法),是存储和交换文本信息的语法,类似于XML。JSON语法是JavaScript对象表示语法的子集。

特点

  • 数据在名称/键值对中
  • 数据由逗号 , 分隔
  • 使用斜杆 \ 来转义字符
  • 大括号 {} 保存对象
  • 中括号 [] 保存数组,数组可以包含多个对象

JSON 比XML更小、更快,更容易解析。Pandas 可以很方便的处理JSON数据。

实例代码:

df = pd.read_json('site.json')
# print(df.info)
print(df)

to_string() 用于返回 DataFrame 类型的数据. JSON 对象与 Python 字典具有相同的格式,因此可以相互转换。

而当遇到嵌套的复杂JSON数据时,例如mix.js中如图所示:

{
    "school_name": "ABC primary school",
    "class": "Year 1",
    "students": [
        {
            "id": "A001",
            "name": "Tom",
            "math": 60,
            "physics": 66,
            "chemistry": 61
        },
        {
            "id": "A002",
            "name": "James",
            "math": 89,
            "physics": 76,
            "chemistry": 51
        },
        {
            "id": "A003",
            "name": "Jenny",
            "math": 79,
            "physics": 90,
            "chemistry": 78
        }
    ]
}

这时候我们就需要使用到 json_normalize() 方法将内嵌的数据完整的解析出来,具体来说:json_normalize() 使用了参数 record_path 并设置为 [‘students’] 用于展开内嵌的 JSON 数据 students。

代码示例:

import pandas as pd
import json

# 使用Python JSON 模块载入数据
with open('mix.json','r') as f:
    data = json.loads(f.read())

#将嵌套的JSON数据展平
df = pd.json_normalize(
    data,
    record_path=['students'],
    meta=['school_name','class']
)
print(df)

结果如图

在这里插入图片描述

5.Pandas 数据清洗

数据清晰是对一些没有用的数据进行处理的过程。

因为数据集存在数据缺失、数据格式错误、错误数据或者数据重复的情况。如果想要对数据分析更加准确的前提,就必须对错误的数据进行处理。

实战示范:利用Pandas包进行数据清洗,数据集如下:

在这里插入图片描述
上表的数据集中包含了四种空数据:n/a 、NA、 --、na、87)]

文本预处理示范代码:见下面资源文件

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

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

相关文章

苹果手机桌面APP带云图标有个箭头,过一段时间经常要下载才能使用APP

环境: IPhone 11 IOS13.0 问题描述: 苹果手机桌面APP带云图标有个箭头,过一段时间经常要下载才能使用APP 解决方案: 1.打开设置,往下找到iTunes Store与App Store 2.找到下面卸载未使用的APP 关闭按钮

记录几个Hudi Flink使用问题及解决方法

前言 如题,记录几个Hudi Flink使用问题,学习和使用Hudi Flink有一段时间,虽然目前用的还不够深入,但是目前也遇到了几个问题,现在将遇到的这几个问题以及解决方式记录一下 版本 Flink 1.15.4Hudi 0.13.0 流写 流写…

一百六十三、Kettle——Linux上安装Kettle9.2(亲测有效,附截图)

一、目的 由于之前发现kettle8.2和kettle9.3这两个版本,或多或少的存在问题 比如kettle8.2的本地服务没问题,但在Linux上创建共享资源库时就有问题; 比如kettle9.3由于不自带shims驱动包,目前在新的下载官网上无法找到下载路径…

Gitbook超详细使用教程,搭建属于你自己的博客!

文章目录 简介与github同步1.创建space2.安装github插件3.同步github4.生成space的url 博客搭建指南1.自定义域名2.发表博客内容3.设置域名默认页面4.界面设置注意事项 End 简介 Gitbook 是一个平台,允许用户创建和分享内容丰富的在线书籍。它有一个用户友好的界面…

JDK JRE JVM 三者之间的详解

JDK : Java Development Kit JRE: Java Runtime Environment JVM : JAVA Virtual Machine JDK : Java Development Kit JDK : Java Development Kit【 Java开发者工具】,可以从上图可以看出,JDK包含JRE;java自己的一些开发工具中&#…

SpringBootWeb案例 Part 2

3. 员工管理 完成了部门管理的功能开发之后,我们进入到下一环节员工管理功能的开发。 基于以上原型,我们可以把员工管理功能分为: 分页查询 带条件的分页查询 删除员工 新增员工 修改员工 那下面我们就先从分页查询功能开始学习。 3.…

内存分布(以及new,delete)

今天给大家说下内存分布,我们都知道的是,像局部变量都在栈区,但是像我们自己有时候申请的空间都在堆区,当然,内存分布不只只是栈区和堆区,还有常量区,代码区等等。如下图: 这就是内存…

项目实战笔记4:敏捷

术语介绍 敏捷项目管理是一种以快速响应变化为核心的项目管理方法。与传统的瀑布模型不同,敏捷方法强调迭代开发和紧密的团队合作。其目的是尽可能快地交付可用的产品,然后在客户和团队之间进行反馈和迭代,以不断优化产品和开发过程。 在敏捷…

电商转化率是什么意思,怎么计算和提高电商转化率?

电商转化率是指访问电商网站的用户中,实际完成购买行为的比例。它可以衡量电商网站的销售能力和用户转化效果,是衡量电商运营效果的重要指标之一。 一、电商转化率的计算公式 电商转化率的计算公式为:转化率完成购买的用户数/访问网站的用户…

PyTorch DataLoader 报错 “DataLoader worker exited unexpectedly“ 的解决方案

注意:博主没有重写d2l的源代码文件,而是创建了一个新的python文件,并重写了该方法。 一、代码运行日志 C:\Users\Administrator\anaconda3\envs\limu\python.exe G:/PyCharmProjects/limu-d2l/ch03/softmax_regression.py Traceback (most r…

Python Opencv实践 - 图像中值滤波

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape) pixel_count img.shape[0] * img.shape[1] print(pixel_count)#为图像添加椒盐噪声 #参考资料&#xf…

Java后端开发面试题——框架篇

Spring框架中的bean是单例的吗?Spring框架中的单例bean是线程安全的吗? singleton : bean在每个Spring IOC容器中只有一个实例。 prototype:一个bean的定义可以有多个实例。 Spring bean并没有可变的状态(比如Service类和DAO类)&#xff0c…

Masterstudy主题 - 用于线上教育、在线学习和在线课程的LMS WordPress主题

Masterstudy主题是每个人的最佳选择!它是一个完整的线上教育WordPress主题,适合所有想要创建在线课程、辅导和语言中心、在线学习平台并在全球范围内传播知识的人。这是一个完美的教育主题,旨在满足学习行业的需求。 网址:Master…

Python功能制作之简单的音乐播放器

需要导入的库: pip install PyQt5 源码: import os from PyQt5.QtCore import Qt, QUrl from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent from PyQt5.QtWidgets import QApplication, QMainWind…

GPT-3.5——从 人工智障 到 大人工智障

有人说,GPT是从人工智障到人工智能的蜕变,但是。。。 我认为,GPT是从 人工智障 到 大人工智障 的退化。。。 从 人工智障 到 大人工智障 GPT-3.5学术介绍No.1---- 西红柿炒钢丝球基本信息详细制作方法材料步骤 幕后花絮 No.2---- 顶尖数学家…

MySQL高级篇——MySQL架构篇1(Linux下MySQL8的安装与使用)

目录 0 安装前0.1 Linux系统及工具的准备0.2 查看是否安装过MySQL0.3 MySQL的卸载 1 MySQL8的Linux版安装1.1 MySQL的4大版本1.2 下载MySQL指定版本1.3 CentOS7下检查MySQL依赖1.4 CentOS7下MySQL安装过程 2 MySQL登录2.1 首次登录2.2 修改密码2.3 设置远程登录 3 MySQL 8 的密…

Jmeter —— 自动录制脚本

目录 目录 1、Jmeter配置 1.1新增一个线程组 1.2Jmeter中添加HTTP代理 1.3配置HTTP代理服务器 2、录制脚本 2.1配置本地代理 2.2访问页面进行操作 2.3脚本处理 1、Jmeter配置 1.1新增一个线程组 1.2Jmeter中添加HTTP代理 1.3配置HTTP代理服务器 修改端口 修改Target…

嵌入式基础知识-中断处理过程

本篇来介绍中断,这是计算机系统以及嵌入式系统的重要概念。 1 中断基本概念 中断是CPU对系统发生的某个事件作出的一种反应。 中断的一些基本概念: 中断源:引起中断的事件称为中断源中断请求:中断源向CPU提出处理的请求称为中断…

excel文本函数篇1

本期主要介绍LEFT、RIGHT、MID以及后面加B的情况: (1)后缀没有B:一个字节代表一个中文字符 (2)后缀有B:两个字节代表一个中文字符 (3)LEFT()从前面开始找,RI…

【腾讯云 TDSQL-C Serverless 产品体验】基于腾讯云轻量服务器以及 TDSQL-C 搭建 LNMP WordPress 博客系统

文章目录 一、前言二、数据库发展与云原生数据库2.1 数据库发展简介2.2 云原生数据库简介2.2.1 云数据库与云原生数据库区别 三、腾讯云 TDSQL-C 数据库3.1 什么是腾讯云 TDSQL-C 数据库3.2 为什么推出 TDSQL-C 数据库?传统 MySQL 架构存在较多痛点3.2.1 传统 MySQL…