pandas——DataFrame

一、dataframe

(一)创建dataframe

file.csv 

Name,Age,City
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
import pandas as pd'''
1.使用字典创建DataFrame:
其中字典的键是列名,值是数据列表。
'''
print('================1.使用字典创建DataFrame====================')
data = {'Column1': [1, 2, 3],'Column2': ['A', 'B', 'C']
}
df = pd.DataFrame(data)
print(df)
'''
2.使用列表的列表创建DataFrame:
如果有多个列表,每个列表代表一列的数据,你可以将它们作为列表的列表传递给DataFrame。
'''
data1 = [[1, 'A'],[2, 'B'],[3, 'C']
]
print('================使用列表的列表创建DataFrame====================')
df1 = pd.DataFrame(data1, columns=['Column1', 'Column2'])
print(df1)
'''
3.指定索引:
在创建DataFrame时,你可以指定行索引。
'''
print('================3.指定索引====================')
data2 = {'Column1': [1, 2, 3],'Column2': ['A', 'B', 'C']
}
index = ['row1', 'row2', 'row3']
df2 = pd.DataFrame(data, index=index)
print(df2)
'''
4.使用read函数:
pandas提供了多种read_*函数来从不同的数据源读取数据并创建DataFrame,例如read_csv、read_excel、read_sql等。
'''
print('================4.使用read函数====================')
df = pd.read_csv('file.csv')
print(df)
'''
5.DataFrame的列操作:
创建DataFrame后,你可以添加、删除或修改列。
'''
print('================5.DataFrame的列操作====================')
df['gender'] = ['女', '男', '女']  # 添加新列
print(df)
print()
df.drop('gender', axis=1, inplace=True)  # 删除列
print(df)
'''
6.DataFrame的行操作:
你可以添加、删除或修改行。
'''
print('================6.DataFrame的行操作====================')
df1.loc[3] = [4, 'D']  # 添加新行
print(df1)
df1.drop(0,inplace=True)  # 删除第一行
print(df1)
'''
7.查看DataFrame信息:
使用df.head()、df.tail()、df.info()等函数来查看DataFrame的内容和结构。
'''
print('================7.查看DataFrame信息====================')
print(df.head(2))
print(df.tail(1))
print(df.info)
'''
8.DataFrame的保存:
你可以将DataFrame保存到不同的文件格式中,如CSV、Excel等。
'''
print('================8.DataFrame的保存====================')
df1.to_csv('file1.csv', index=False)

 

生成的file1.csv 

Column1,Column2
2,B
3,C
4,D

(二)dataframe—索引

import pandas as pd'''
1.默认索引:
当你创建一个DataFrame而没有指定索引时,pandas会自动创建一个从0开始的整数索引。
'''
print('1.默认索引:')
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
print(df.index)  # 输出:RangeIndex(start=0, stop=3, step=1)
'''
2.命名索引:
你可以给索引命名,使其更有意义。
'''
print('2.命名索引:')
df.index.name = 'RowID'
print(df)
'''
3.设置索引:
在创建DataFrame时,可以通过index参数来设置索引。
'''
print('3.设置索引:')
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c'])
print(df1)
'''
4.重置索引:
如果索引变得不连续或你想要将其重置为默认的整数索引,可以使用reset_index()方法。
'''
print('4.重置索引:')
df.reset_index(drop=True, inplace=True)
# print(df)
'''
5.多重索引(MultiIndex):
DataFrame可以有多个索引级别,这称为多重索引。
'''
print('5.多重索引(MultiIndex):')
arrays = [['bar', 'bar', 'baz', 'baz'],['one', 'two', 'one', 'two']]
df2 = pd.DataFrame({'A': [1, 2, 3, 4]}, index=arrays)
print(df2)
'''
6.索引选择数据:
使用.loc[]和.iloc[]可以基于索引来选择数据。
'''
print('6.索引选择数据:')
# 使用标签选择数据
print(df1.loc['a'] ) # 选择索引为'a'的行
# 使用整数位置选择数据
print(df1.iloc[0])  # 选择第一行
'''
7.切片:
可以对索引进行切片操作,选择一部分数据。
'''
print('7.切片:')
print(df1.loc['a':'c'] ) # 选择索引从'a'到'c'的行'''
8.索引的修改、删除:
'''
print('8.索引的修改、删除:')
df1.index = ['x', 'y', 'z']
print(df1)
# df1.drop('a')  # 删除索引为'a'的行
# print(df1)
'''
9.索引的排序:
可以使用sort_index()方法对索引进行排序。
'''
print('9.索引的排序:')
df1.sort_index()
print(df1)

 

(三)dataframe—切片

import pandas as pd# 创建一个示例DataFrame
data = {'Name': ['John', 'Anna', 'Pingping', 'Linda', 'Chris'],'Age': [28, 24, 35, 32, 29],'City': ['New York', 'Paris', 'China', 'London', 'Madrid']
}
df = pd.DataFrame(data)
'''
1.基本切片:
使用.loc[]和.iloc[]可以基于标签和位置进行切片。
'''
print('1.基本切片:')
# 基于标签的切片
# df.loc['row_label':'row_label']
# 选择Name为'John'的行中Age列的数据
print(df.loc[0, 'Age'])
# 基于位置的切片
# df.iloc[0:3]
print(df.iloc[0:3])
#选择前3行的数据:
print(df.head(3))
'''
2.列切片:
使用列名或列索引可以对DataFrame的列进行切片。
'''
print('2.列切片:')
# 使用列名切片
# df[['Column1', 'Column2']]  # 选择Column1和Column2列
print(df[['Name','City']])
# 使用列索引切片
# df.iloc[:, 0:3]  # 选择前3列
print(df.iloc[:, 0:3] )
'''
3.行和列切片:
可以同时对行和列进行切片。
'''
print('3.行和列切片:')
# df.loc[0:3, ['Column1', 'Column2']]  # 选择前4行的Column1和Column2列
# 选择前两行的Name和City列:
print(df.loc[0:1, ['Name', 'City']])
'''
4.使用.loc[]和.iloc[]:
.loc[]用于基于标签的索引,而.iloc[]用于基于整数位置的索引。
'''
print('4.使用.loc[]和.iloc[]:')
print(df.loc[0:3])# 选择第0行到第3行(不包括第3行)
print(df.iloc[0:3])  # 选择第0列到第2列(不包括第3列)
'''
5.使用条件表达式切片
选择年龄大于30岁的行:
'''
print('5.使用条件表达式切片')
print(df[df['Age'] > 30])
'''
6. 多重条件切片
选择年龄大于30岁且城市为Berlin的行:
'''
print('6. 多重条件切片')
print(df[(df['Age'] > 30) & (df['City'] == 'Berlin')])
'''
7.使用query方法
选择年龄大于25岁的行:
'''
print('7.使用query方法')
print(df.query('Age > 25'))'''
8.使用eval方法
计算新的列AgeNextYear为年龄加1:
'''
print('8.使用eval方法')
print(df.eval('AgeNextYear = Age + 1'))

 

(四)dataframe—名字

import pandas as pd# 创建一个DataFrame
df = pd.DataFrame({'Name': ['John', 'Anna', 'Peter', 'Linda'],'Age': [28, 24, 35, 32],'City': ['New York', 'Paris', 'Berlin', 'London']
})'''
1. 设置DataFrame的索引名称
你可以为DataFrame的索引设置一个名称,这通常通过.index.name属性来完成。
'''
print('1. 设置DataFrame的索引名称')
# 设置索引名称
df.index.name = 'ID'
print(df)
'''
2.访问带有名称的索引
你可以通过索引名称来访问特定的行。
'''
print('2.访问带有名称的索引')
# 通过索引名称访问ID为1的行
print(df.loc[1])
# 使用列索引切片
# df.iloc[:, 0:3]  # 选择前3列
print(df.iloc[:, 0:3] )
'''
3.删除索引名称
如果你不再需要索引名称,可以通过将.index.name设置为None来删除它。
'''
print('3.删除索引名称')
df.index.name = None
print(df)
'''
4.使用索引名称进行条件筛选
你可以使用索引名称来筛选满足特定条件的行。
'''
print('4.使用索引名称进行条件筛选')
# 筛选年龄大于30岁的行
print(df[df['Age'] > 30])
'''
5.使用at和iat访问器
at和iat访问器允许你通过索引标签和列名来快速访问单个值。
'''
print('5.使用at和iat访问器')
# 使用at访问器
print(df.at[1, 'Name'])  # 输出:Anna# 使用iat访问器
print(df.iat[2, 0])  # 输出:Peter
'''
6. 重置索引
如果你需要将索引标签转换为普通的列,可以使用reset_index()方法。
'''
print('6. 重置索引')
# 重置索引,将索引标签转换为列
df_reset = df.reset_index()
print(df_reset)
'''
7.设置多个索引名称
对于多重索引(MultiIndex),你可以为每个级别的索引设置名称。
'''
print('7.设置多个索引名称')
# 创建一个多重索引的DataFrame
index = pd.MultiIndex.from_tuples([('John', 1), ('John', 2), ('Anna', 1), ('Anna', 2)],names=['Name', 'ID']
)
df_multi = pd.DataFrame({'Score': [85, 90, 88, 93]}, index=index)print(df_multi)

 

(五)常见操作

import pandas as pd# 创建一个DataFrame
data = {'Name': ['平平', 'Anna', '小王子', 'Linda'],'Age': [28, 24, 35, 32],'City': ['New York', 'Paris', 'Berlin', 'London']
}
df = pd.DataFrame(data)
print(df)#1.选择数据
print('==========1.选择数据============')
# 选择行
# 选择第2行的数据
print(df.iloc[2])
# 选择列
# 选择'Name'列
print(df['Name'])
# 选择行和列
# 选择第1行和第2列的数据(即'Anna'的'City')
print(df.iloc[1, 2])
#2.添加和删除列
print('==========2.添加和删除列============')
# 添加列
# 添加新列'Country'
df['Country'] = 'USA'
print(df)
# 删除列
# 删除'Country'列
df.drop('Country', axis=1, inplace=True)
print(df)
#3.修改数据
print('==========3.修改数据============')
# 修改'Peter'的年龄为36
df.loc[df['Name'] == 'Peter', 'Age'] = 36
print(df)
#4.排序和筛选
print('==========4.排序和筛选============')
#排序
# 按'Age'列升序排序
df_sorted = df.sort_values(by='Age')
print(df_sorted)
#筛选
# 选择'City'为'Berlin'的行
berlin_residents = df[df['City'] == 'Berlin']
print(berlin_residents)
#5.聚合和描述统计
print('==========5.聚合和描述统计============')
#聚合
# 按'City'列对'Age'列求平均值
average_age = df.groupby('City')['Age'].mean()
print(average_age)
#述统计
# 获取'Age'列的描述统计信息
age_stats = df['Age'].describe()
print(age_stats)
# 6.合并和连接
print('==========6.合并和连接============')
# 横向合并
# 创建一个新的DataFrame
df2 = pd.DataFrame({'Name': ['Chris', 'Diana'],'Age': [29, 27],'City': ['Madrid', 'Rome']
})# 横向合并df和df2
df_concatenated = pd.concat([df, df2])
print(df_concatenated)
# 纵向合并
# 创建一个新的DataFrame
df3 = pd.DataFrame({'Name': ['John', 'Anna'],'Department': ['HR', 'Finance']
})# 纵向合并df和df3
df_merged = pd.merge(df, df3, on='Name')
print(df_merged)
#7.处理缺失数据
print('==========7.处理缺失数据============')
# 填充缺失值
# 假设我们有一些缺失数据
df_missing = pd.DataFrame({'Name': ['Eve', None],'Age': [25, 30]
})# 填充缺失值
df_missing.fillna({'Name': 'Unknown'}, inplace=True)
print(df_missing)
# 删除缺失值
# 删除包含缺失值的行
df_dropped = df_missing.dropna()
print(df_dropped)

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

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

相关文章

Maven项目的基础配置:利用IDEA将SpringBoot的项目打包成war文件

文章目录 引言Maven项目的聚合与继承(依赖管理)把项目打包成war包其他打包配置引言 利用IDEA将SpringBoot的项目打包成war文件Maven项目的聚合与继承(依赖管理)Maven项目的聚合与继承(依赖管理) 把项目打包成war包 利用IDEA将SpringBoot的项目打包成war文件:要配置启动…

Vue3+TypeScript+Vite 后台管理项目_登录页面开发实战

一、前言 基于之前创建的基础工程,接下来我们完成登录页面的开发。 https://blog.csdn.net/qq_34709175/article/details/143426433?spm1001.2014.3001.5501 这里需要交代一下,项目里的文件命名规则,以及文件结构,views下存放…

【销帮帮-注册/登录安全分析报告-试用页面存在安全隐患】

联通支付注册/登录安全分析报告 前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨…

文件管理软件根据多个关键字将不同目录下的文件夹批量复制或移动到新的指定文件夹,完成大量文件夹和文件管理任务

在浩瀚的数字海洋中,文件夹如同散落的珍珠,等待着被有序地串连。首助编辑高手软件,携带着其独特的按多关键字分发功能,犹如一位智慧的渔夫,能够精准地捕捉那些含有特定关键字的文件夹,并将它们从各个角落批…

Selective Generation for Language Models 语言模型的选择性生成

生成式语言模型(Generative Language Models, GLMs)在文本生成任务中取得了显著进展。然而,生成内容的“幻觉”现象,即生成内容与事实或真实语义不符的问题,仍是GLMs在实际应用中的一个重大挑战。为了解决这一问题&…

SpringBoot接入星火认知大模型

文章目录 准备工作整体思路接入大模型服务端和大模型连接客户端和服务端的连接测试 准备工作 到讯飞星火大模型上根据官方的提示申请tokens 申请成功后可以获得对应的secret,key还有之前创建的应用的appId,这些就是我们要用到的信息 搭建项目 整体思…

新老项目不同node版本,使用nvm控制node版本切换(mac、window)

window系统电脑的链接:https://blog.csdn.net/qq_40269801/article/details/136450961 以下是mac版本的操作方式: 1、打开终端 克隆 NVM 仓库: git clone https://github.com/nvm-sh/nvm.git ~/.nvm 2、运行安装脚本: cd ~/.n…

kafka如何获取 topic 主题的列表?

大家好,我是锋哥。今天分享关于【kafka如何获取 topic 主题的列表?】面试题?希望对大家有帮助; kafka如何获取 topic 主题的列表? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中,可以…

半参数模型

4. 半参数模型 (Semi-parametric Model) 半参数模型结合了参数化和非参数化的方法。可以在整体上采用线性回归,但在局部允许非线性变化。这样做的目的是在保持模型的线性解释性的同时,捕捉细微的弧度趋势。 例如,可以定义: y …

spring 学习路线梳理(二)注解

1.通过注解的方式创建bean 1.1 定义dao层的接口和实现 public interface ILoginDao {public String login(); }Slf4j Repository public class LoginDaoImpl implements ILoginDao {public LoginDaoImpl(){System.out.println("spring create bean call");}Override…

【创建型】单例模式

单例模式使用的场景:需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、session工厂等) 1. 饿汉式(静态常量&#xf…

怎么安装行星减速电机才是正确的

行星减速电机由于其高效、精密的传动能力,广泛应用于自动化设备、机器人、机床以及其他需要精准控制的领域。正确的安装行星减速电机对于确保设备的性能与延长使用寿命至关重要。 一、前期准备 在进行行星减速电机的安装之前,必须做好充分的前期准备工作…

代码随想录算法训练营第三十四天 | 01背包问题 416.分割等和子集

01背包问题—1(dp为二维数组): 文章链接 题目链接:卡码网 46 思路: 因为有物品和背包容量两个方面,因此我们使用二维数组保存递推的结果 ① dp数组及下标的含义: dp[i][j],其中 i 是第 i 个物品&#x…

什么品牌的护眼台灯比较好?五款护眼效果比较明显的护眼台灯

在当今信息爆炸的时代背景下,挑选一款真正符合个人需求的护眼台灯,确实是一项不小的挑战。市场上品牌众多、型号繁杂,功能特点各不相同,价格区间也相当广泛,许多消费者在选购时往往感到迷茫不已。当大家询问“什么品牌…

cv.dnn.blobFromImage参数详解

例如: image cv.imread(imgs/img.png) blob cv.dnn.blobFromImage(image, scalefactor1.0, size(224, 224), mean(0, 0, 0), swapRBTrue, cropFalse) print("原始图像形状:", image.shape) print("Blob数据形状:", blob.shape)1. image 含义…

消息队列-Rabbitmq(消息发送,消息接收)

将来我们开发业务功能的时候,肯定不会在控制台收发消息,而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不…

电脑没有下载声卡驱动怎么办?电脑声卡驱动安装方法

在日常使用电脑的过程中,我们可能会遇到电脑没有声音的问题,这往往与声卡驱动缺失或损坏有关。声卡驱动是连接电脑硬件(声卡)与操作系统之间的桥梁,确保音频信号能够正常输入输出。那么,当电脑没有声卡驱动…

人工智能与数据安全:Facebook如何应对隐私挑战

在数字时代,数据隐私和安全成为了用户和企业关注的核心问题。作为全球最大的社交媒体平台之一,Facebook面临着日益严峻的隐私挑战。近年来,频繁发生的数据泄露事件和对用户隐私的质疑,使得Facebook在保护用户数据方面倍感压力。为…

使用RabbitMQ实现微服务间的异步消息传递

使用RabbitMQ实现微服务间的异步消息传递 RabbitMQ简介 安装RabbitMQ 在Ubuntu上安装RabbitMQ 在CentOS上安装RabbitMQ 配置RabbitMQ 创建微服务 生产者服务 安装依赖 生产者代码 消费者服务 消费者代码 运行微服务 消息模式 直接模式 生产者代码 消费者代码 扇出模式 生产…

【MySQL】MySQL安装以及各种报错处理

前言: 本节内容讲述在Ubuntu环境下怎么进行MySQL的安装。 以及一些安装过程中遇到的报错如何处理的问题。 ps:注意, 本篇文章不是图形化界面的MySQL安装教程哦。想要安装图形化界面的MySQL的友友们可以另寻资源了。 目录 更新软件包列表 安装M…