pandas数据处理库使用

news2024/9/24 21:19:01

文章目录

  • 链接: [原文章链接](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&tempkey=MTI4Nl8zM3FHVFU1NDRDL0p2SkplRTVidmhiNmh1ZWF3YXkwY3VYZlZNaWx0MXowdThFbVRUVEFEdEs5YlU2SUJLcmtXTHZpbnFmR2V6SG1rbGJyd01zYnRkdURWa1ZvNGtIU1piWDd5RFA4OUxkNmlaVmZ1QVpEd2tWR25IR1NLdzZRZF9zRWtabHhtendoQ2h5ZEo2WTlFczRfUkcyejZwbm0tM3hRdVlRfn4%3D&chksm=c2a06c00f5d7e51601e3fda8e6cf5b92d57101ba67f3aa7384a48fb4309b81f2f467921985ef&token=1472707715&lang=zh_CN#rd)
  • 1、pandas简介
  • 2、Series使用
  • 3、iloc访问机制
  • 4、DateFrame使用
  • 5、Pandas CSV
  • 6、Pandas 数据清洗

链接: 原文章链接

感兴趣的可以关注一下公众号,会第一时间给您推送更多精彩的内容,欢迎大家前来指正,欢迎欢迎~~在这里插入图片描述

1、pandas简介

Pandas(Panel Data的缩写)是一个开源的Python数据处理库,它提供了高性能、易用的数据结构和数据分析工具,用于处理和分析结构化数据。
Pandas的核心数据结构是DataFrame和Series,它们使数据的清理、转换、分析和可视化变得非常便捷。

2、Series使用

2.1、Series是一种类似一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的标签组成。这些标签通常是索引,用于对数据进行分类和定位。而Pandas库是基于NumPy构建的,专门用于处理表格和混杂数据,与NumPy不同,它更适合处理带有复杂标签的数据。类似于字典

import numpy as np
from pandas import Series
data1=np.random.randint(1,10,size=10)
print("ndarray数组是:")
print(data1)
data2=Series(data1)
print("Series数组是:")
print(data2)

2.2、创建出来的Series对象默认会有一个索引。如果你不想使用默认的索引(隐式索引),可以在创建Series对象时通过index参数指定自定义的索引(显示索引),用于分类或标记数据,numpy数组索引主要用来访问数组中的元素,但它并不提供额外的元数据或分类功能

data = [1, 2, 3, 4, 5]
index = ['a', 'b', 'c', 'd', 'e']
series = pd.Series(data, index=index)
print(series['a'])  # 输出:1
print(series['c'])  # 输出:3

2.3、 使用列表或数组创建,创建的Series数组则是副本,改变其中一个不会影响另一个。

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

2.4、使用numpy创建出来的Series数组不是副本。这意味着当你改变原来的numpy数组时,Series也会跟着改变

import pandas as pd
import numpy as np
data = np.array([1, 2, 3, 4, 5])
series = pd.Series(data)

2.5、使用字典创建的Series对象也不是副本,而是与字典共享数据。因此,如果你修改了原始字典中的数据,那么对应的Series对象也会跟着改变。字典的键作为索引,值作为数据

import numpy as np
import pandas
from pandas import Series
list={
    "name":"诸葛亮",
    "age:":333,
    "sex":"男"
}
series=Series(list)
print(series)

3、iloc访问机制

配合隐式的索引,官方推荐的访问机制

import numpy as np
import pandas
from pandas import Series
s1=Series(np.random.randint(1,10,size=5,),index=["A","B","C","D","E"])#用arrary创建一个Series数组
print(s1)
print(s1.iloc[[0,1]])

配合显式的索引,官方推荐的访问机制

import numpy as np
import pandas
from pandas import Series
s1=Series(np.random.randint(1,10,size=5,),index=["A","B","C","D","E"])#用arrary创建一个Series数组
print(s1)
print(s1.loc["A"])

4、DateFrame使用

4.1、DataFrame是一个类似于二维数组或表格(如Excel表格)的对象 ,它的每列数据可以是不同的数据类型,与Series的结构相似,DataFrame也是由索引和数据组成的,不同的是,DataFrame的索引不仅有行索引,还有列索引 。

import pandas as pd
data = [['Google', 10], ['Runoob', 12], ['Wiki', 13]]
# 创建DataFrame
df = pd.DataFrame(data, columns=['Site', 'Age'])
# 使用astype方法设置每列的数据类型
df['Site'] = df['Site'].astype(str)
df['Age'] = df['Age'].astype(float)
print(df)

4.2、使用字典来创建

import pandas as pd
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}
df = pd.DataFrame(data)
print (df)

4.3、使用 ndarrays 创建,ndarray 的长度必须相同, 如果传递了 index,则索引的长度应等于数组的长度

import numpy as np
import pandas as pd

# 创建一个包含网站和年龄的二维ndarray
ndarray_data = np.array([
    ['Google', 10],
    ['Runoob', 12],
    ['Wiki', 13]
])

# 使用DataFrame构造函数创建数据帧
df = pd.DataFrame(ndarray_data, columns=['Site', 'Age'])

# 打印数据帧
print(df)

在这里插入图片描述

4.4、可以使用字典(key/value),其中字典的 key 为列名,没有对应的部分数据为 NaN。

import pandas as pd

data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]

df = pd.DataFrame(data)

print (df)

4.5、DataFrame 的属性和方法

# 从 Series 创建 DataFrame
s1 = pd.Series(['Alice', 'Bob', 'Charlie'])
s2 = pd.Series([25, 30, 35])
s3 = pd.Series(['New York', 'Los Angeles', 'Chicago'])
df = pd.DataFrame({'Name': s1, 'Age': s2, 'City': s3})

# DataFrame 的属性和方法
print(df.shape)     # 形状
print(df.columns)   # 列名
print(df.index)     # 索引
print(df.head())    # 前几行数据,默认是前 5 行
print(df.tail())    # 后几行数据,默认是后 5 行
print(df.info())    # 数据信息
print(df.describe())# 描述统计信息
print(df.mean())    # 求平均值
print(df.sum())     # 求和

访问列:使用列名作为属性或通过 .loc[]、.iloc[] 访问,也可以使用标签或位置索引

# 通过列名访问
print(df['Column1'])

# 通过属性访问
print(df.Name)     
   
# 通过 .loc[] 访问
print(df.loc[:, 'Column1'])

# 通过 .iloc[] 访问
print(df.iloc[:, 0])  # 假设 'Column1' 是第一列

# 访问单个元素
print(df['Name'][0])

5、Pandas CSV

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

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

import pandas as pd

df = pd.read_csv('nba.csv')

print(df.to_string())

5.2、to_csv() 方法将 DataFrame 存储为 csv 文件

import pandas as pd 
   
# 三个字段 name, site, age
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('site.csv')

6、Pandas 数据清洗

数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。

上表包含了四种空数据:

n/a
NA
—
na

6.1、Pandas 清洗空值
如果我们要删除包含空字段的行,可以使用 dropna() 方法,语法格式如下:
DataFrame.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)

axis:默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。
how:默认为 'any' 如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how='all' 一行(或列)都是 NA 才去掉这整行。
thresh:设置需要多少非空值的数据才可以保留下来的。
subset:设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。
inplace:如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。

6.2、isnull() 判断各个单元格是否为空

import pandas as pd

df = pd.read_csv('property-data.csv')

print (df['NUM_BEDROOMS'])
print (df['NUM_BEDROOMS'].isnull())

6.3、可以指定空数据类型

import pandas as pd

missing_values = ["n/a", "na", "--"]
df = pd.read_csv('property-data.csv', na_values = missing_values)

print (df['NUM_BEDROOMS'])
print (df['NUM_BEDROOMS'].isnull())

6.6、删除包含空数据的行

import pandas as pd

df = pd.read_csv('property-data.csv')

# dropna() 方法返回一个新的 DataFrame,不会修改源数据。
# 如果你要修改源数据 DataFrame, 可以使用 inplace = True 参数:
new_df = df.dropna()

print(new_df.to_string())

6.6、可以移除指定列有空值的行

import pandas as pd

df = pd.read_csv('property-data.csv')

df.dropna(subset=['ST_NUM'], inplace = True)

print(df.to_string())

6.5、fillna() 方法来替换一些空字段

import pandas as pd

df = pd.read_csv('property-data.csv')

df.fillna(12345, inplace = True)

print(df.to_string())

清洗数据

import pandas as pd

person = {
  "name": ['Google', 'Runoob' , 'Taobao'],
  "age": [50, 40, 12345]    # 12345 年龄数据是错误的
}

df = pd.DataFrame(person)

df.loc[2, 'age'] = 30 # 修改数据

print(df.to_string())

在这里插入图片描述

将 age 大于 120 的设置为 120

import pandas as pd

person = {
  "name": ['Google', 'Runoob' , 'Taobao'],
  "age": [50, 200, 12345]    
}

df = pd.DataFrame(person)

for x in df.index:
  if df.loc[x, "age"] > 120:
    df.loc[x, "age"] = 120

print(df.to_string())

在这里插入图片描述

将错误数据的行删除

import pandas as pd

person = {
  "name": ['Google', 'Runoob' , 'Taobao'],
  "age": [50, 40, 12345]    # 12345 年龄数据是错误的
}

df = pd.DataFrame(person)

for x in df.index:
  if df.loc[x, "age"] > 120:
    df.drop(x, inplace = True)

print(df.to_string())

在这里插入图片描述

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

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

相关文章

MySQL常用窗口函数总和

在 MySQL 中,窗口函数是一类用于在查询结果集中计算值的函数,允许用户根据数据行进行聚合或排序操作,同时保留行的详细信息。窗口函数在分析数据时非常有用,因为它们允许您在不缩小结果集的情况下对数据进行复杂的计算。 常见的窗…

【文献及模型、制图分享】县域城乡融合发展对乡村旅游地实现共同富裕的影响机制——以长三角地区60个典型县为例

文献介绍 乡村旅游地是推动城乡融合、实现共同富裕的关键区域,精准把握县域城乡融合发展多维特征,系统解析其促进乡村旅游地共同富裕的机制,有助于丰富新时代城乡共富理论体系。基于共生理论,构建“共生单元—共生环境—共生结果…

linux~~目录结构远程登录教程(xshell+xftp)

目录 1.目录结构 2.远程登录xshell 2.1所需工具 2.2了解虚拟机IP 2.3查看是否正常连接 2.4xshell进行连接 3.文件传输xftp7 3.1xftp6安装 3.2相关设置 3.3效果展示 3.4文件之间的传输过程 1.目录结构 bin目录里面主要存放这个我们经常使用的指令,例如这个…

PointNet++改进策略 :模块改进 | PAConv,位置自适应卷积提升精度

题目:PAConv: Position Adaptive Convolution with Dynamic Kernel Assembling on Point Clouds来源:CVPR2021机构:香港大学论文:https://arxiv.org/abs/2103.14635代码:https://github.com/CVMI-Lab/PAConv 前言 PA…

从八股文到奇怪的缓存一致性问题

本文是最近看阿里云开发者的一遍奇怪的缓存一致性问题的总结与心得,原文放在文章末尾 缓存穿透、缓存击穿、缓存雪崩 缓存穿透、缓存击穿和缓存雪崩都是系统中可能遇到的问题,特别在高并发场景下。 缓存穿透 与后两者不同,缓存穿透是查询不…

10.10 层次化网络模型和综合布线系统

层次化网络模型 综合布线系统 真题

前端登录鉴权——以若依Ruoyi前后端分离项目为例解读

权限模型 Ruoyi框架学习——权限管理_若依框架权限-CSDN博客 用户-角色-菜单(User-Role-Menu)模型是一种常用于权限管理的设计模式,用于实现系统中的用户权限控制。该模型主要包含以下几个要素: 用户(User)…

基于微信的热门景点推荐小程序的设计与实现(论文+源码)_kaic

摘 要 近些年来互联网迅速发展人们生活水平也稳步提升,人们也越来越热衷于旅游来提高生活品质。互联网的应用与发展也使得人们获取旅游信息的方法也更加丰富,以前的景点推荐系统现在已经不足以满足用户的要求了,也不能满足不同用户自身的个…

Leetcode—72. 编辑距离【中等】

2024每日刷题&#xff08;158&#xff09; Leetcode—72. 编辑距离 动态规划算法思想 实现代码 class Solution { public:int minDistance(string word1, string word2) {const int m word1.length();const int n word2.length();vector<vector<int>> dp(n 1,…

Multi-Mode DOA Estimation AND Relax Super Resolution DOA

之前看到加特兰的新品发布会上&#xff0c;PPT写的一些算法信号处理流程图&#xff0c;这里记录学习一下自己的思考&#xff1a; 原始数据采样数据预处理距离维FFT通道间DDMA数据分离非相干累计RV-MAP coarse-cfar fine CFAR(multi-Mode DOA Estimation): 舱内的CPD信号处理流…

分支线定向耦合器宽带化设计和ADS仿真

分支线定向耦合器宽带化设计和ADS仿真 工程下载链接&#xff1a;分支线定向耦合器宽带化设计和ADS仿真-ADS工程文件 之前经常分析分支线定向耦合器&#xff0c;例如在15、ADS使用记录之耦合器设计和基于AWR的微带线分支线耦合器设计-从原理到版图中都有涉及&#xff0c;但是由…

Axure中继器动态数据图表制作

在Axure RP中&#xff0c;中继器&#xff08;Repeater&#xff09;是一个非常强大的工具&#xff0c;它允许设计者动态地展示和交互数据&#xff0c;进而创建各种复杂的数据可视化图表&#xff0c;如柱状图、条形图、堆叠图、散点图和对比图。以下将详细介绍如何使用中继器来设…

solidworks模型导出urdf(超详细)

目录 写在前面的话1 solidworks 文件2 安装sw2urdf插件3 完整步骤3.1 设置基准轴3.2 设置点3.3 设置坐标轴3.4 设置sw2urdf参数3.5 导出可能的问题3.6 ros2 编译3.7 成功结果画面 写在前面的话 刚进组1个月&#xff0c;我的博士研究方向是自动驾驶&#xff0c;还没入门&#x…

火山引擎携手Keep,让线上健身更快更稳

今年年初&#xff0c;一部《热辣滚烫》又掀起了健身塑型风潮。作为健身领域的佼佼者&#xff0c;Keep 为用户提供全面的健身方案&#xff0c;以帮助用户实现健身目标。随着短视频运动的流行&#xff0c;Keep 覆盖的运动品类超过60类&#xff0c;同时不断尝试直播等新的内容承载…

Oceanbase 透明加密TDE

官方文档&#xff1a;数据库透明加密概述-V4.3.2-OceanBase 数据库文档-分布式数据库使用文档 OceanBase 数据库社区版暂不支持数据透明加密。 数据存储加密是指对数据和 Clog 等保存在磁盘中的数据进行无感知的加密&#xff0c;即透明加密&#xff08;简称 TDE&#xff09;。…

【时时三省】(C语言基础)指针进阶 例题

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 字符数组例题&#xff1a; arr后面放了六个字符 所以这个数组的元素个数就是6 第一个arr 因为他计算的是一整个数组的大小 就是打印6 第二个arr0 arr没有单独放在它的内部 所以它计算的就是…

flunet瞬态处理时均问题

fluent处理时均问题 最近遇到个同学&#xff0c;处理心脏跳动的时均问题&#xff0c;由于仅想取部分稳定时间段的时均数据&#xff0c;fluent的自动采样仅能对全部时间做处理&#xff0c;就存在问题了&#xff0c;网上看到两篇很详细的文章&#xff0c;记录下。 具体网址&…

Docker Elasticsearch安装ik分词插件教程

本章教程在通过Docker 安装Elasticsearch,并安装ik分词插件。本文的重点是安装ik分词插件。 一、安装Elasticsearch 安装教程以前写过,参考:https://blog.csdn.net/qq_19309473/article/details/140725121 安装之后,通过http://ip:9200,可以访问,就表示安装成功。 二、安装…

[python]socket之网络编程基础知识

1.三要素介绍: ip地址:设备在网络内的标识,分为ipv4和ipv6 端口号:软件(程序)在设备上的唯一标识.0-65535,其中0-1024为知名端口号,程序开发中最好不要使用 协议:数据发送的规则,有TCP和UDP 等 ip地址详解: 简单来说主要分为 IpV4, IpV6 IpV4: 采用4个字节, 十进制的形式来…

DSP基本名词术语及其关系

前言 信号处理是现代科技和工程领域中一个重要的分支&#xff0c;涉及对各种信号进行采集、传输、处理和分析的一系列方法和技术。其核心概念包括信号、系统、线性系统、时域与频域、稳定性和稳定性等。信号处理技术主要用于对模数转换后和数模转换前的数字信号进行处理&#x…