首页 > 其他分享 >pandas数据处理库使用

pandas数据处理库使用

时间:2024-09-04 22:24:24浏览次数:14  
标签:df Series print pd 使用 数据处理 import 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)

pandas数据处理库使用_数组

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)

pandas数据处理库使用_数据_02

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)

pandas数据处理库使用_数组_03

4.2、使用字典来创建

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

pandas数据处理库使用_数组_04

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)

pandas数据处理库使用_Google_05

在这里插入图片描述

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())

pandas数据处理库使用_数据_06

在这里插入图片描述

将 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())

pandas数据处理库使用_数组_07

在这里插入图片描述

将错误数据的行删除

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())

pandas数据处理库使用_数组_08

在这里插入图片描述



标签:df,Series,print,pd,使用,数据处理,import,pandas
From: https://blog.51cto.com/u_14618022/11920511

相关文章

  • 使用AI写WebSocket知识是一种怎么样的体验?
    一、WebSocket基础知识1.WebSocket概念1.1为什么会出现WebSocket一般的Http请求我们只有主动去请求接口,才能获取到服务器的数据。例如前后端分离的开发场景,自嘲为切图仔的前端大佬找你要一个配置信息的接口,我们后端开发三下两下开发出一个RESTful架构风格的API接口,只有当......
  • Windows 10/11下使用tar进行打包/解压
    目录前言tar的原理tar基本用法使用示例前言tar是一个在Unix、Linux、macOS等操作系统上常用的文件压缩和归档工具,它可以将多个文件或目录打包成一个文件,并进行压缩,以便于传输和存储。但Windows10从17063版本开始,默认自带tar工具。tar的原理tar的原理:将多个文件或目......
  • Android 使用拦截器结合协程实现无感知的 Token 预刷新方案
    背景在应用中,我们通常使用Token作为用户认证的凭证。为了安全起见,Token一般设置较短的有效期,并通过refreshToken进行续期。传统的做法是当服务端返回Token过期的响应(如401)时,再进行刷新,但这种方式可能导致用户体验不佳(如突然的登录状态丢失、请求失败等)。网上关于A......
  • 在 Vue 3 中,使用 `PropType` 定义复杂类型的 props
    在Vue3中,使用PropType可以定义复杂类型的props。这对于确保组件props接收到的值符合预期的结构非常有用。下面是一些定义复杂类型的常见方法。1.定义对象类型你可以使用TypeScript的接口或类型别名来定义复杂对象类型。import{defineComponent,PropType}from'......
  • 【python因果推断库6】使用 pymc 模型的工具变量建模 (IV)1
    目录使用pymc模型的工具变量建模(IV)使用pymc模型的工具变量建模(IV)这份笔记展示了一个使用工具变量模型(InstrumentalVariable,IV)的例子。我们将会遵循Acemoglu,Johnson和Robinson(2001)的一个案例研究,该研究尝试解开强大的政治机构对于以国内生产总值(GDP)......
  • 【Azure Policy】使用deployIfNotExists 把 Azure Activity logs 导出保存在Storage A
    问题描述使用AzurePolicy,对订阅下的全部ActivityLog配置DiagnosticSetting,要求:在Subscription或ManagementGroup级别,针对未启用ActivityLog功能的订阅,启用ActivityLog功能;对已经启用了Activitylog功能的订阅,使用该Policy纠正并统一其参数配置;所收集到的AzureActivityLog存......
  • 【机器学习】嘿马机器学习(科学计算库)第8篇:Pandas,学习目标【附代码文档】
    本教程的知识点为:机器学习(常用科学计算库的使用)基础定位机器学习概述机器学习概述1.5机器学习算法分类1监督学习机器学习概述1.7Azure机器学习模型搭建实验Azure平台简介Matplotlib3.2基础绘图功能—以折线图为例1完善原始折线图—给图形添加辅助功能M......
  • x64dbg使用技巧及upx手动脱壳
    x64dbg是一款开源的动态调试工具,广泛应用于Windows平台的软件逆向工程中。安装x64dbg官网地址:x64dbg区别动态反汇编调试(DynamicDisassemblyDebugging)是指在程序运行时动态地反汇编机器码,从而获取指令级别的执行信息和内存访问情况,以辅助调试和分析程序。动态反汇编调试需......
  • 【大模型】使用 Xinference 部署本地模型,从GPU服务器到本地知识库搭建Dify【LLM大语言
    基本介绍基础信息GPU服务器获取基础安装基础信息安装显卡驱动配置显卡检查下载禁用nouveau系统自带驱动显卡驱动安装安装nvidia-docker下载配置验证Xinference部署docker部署官方文档模型下载glm-4-9b-chatEmbedding(向量)模型Rerank模型模型部署Embedding(向量)模型......
  • java 使用WebSocket 功能实现
    java使用WebSocket功能实现我整理的一些关于【架构设计】的项目学习资料+视频(附讲解~~)和大家一起分享、学习一下: https://d.51cto.com/bLN8S1实现Java直播弹幕功能1.引言本文将教会一位刚入行的小白如何实现Java直播弹幕功能。直播弹幕是指在直播过程中,观众可以发送实时弹幕......