python: pandas与numpy(一)创建DataFrame数组与数组的简单操作

2023-11-13

目录

前言:

1. 创建Series数组:

2. 创建DataFrame数组:

使用字典来创建DataFrame:

使用列表来创建DataFrame:

使用Series数组创建DataFrame:

使用numpy函数创建DataFrame:

3. 在DataFrame数组中添加其他DataFrame数组——concat()函数:

4. DataFrame数组中列与列之间的运算:

5. 两种删除列的方法——del 和pop():

del:

pop():


前言:

本文对pandas不做过多的解释,主要内容为利用numpy的基本技巧创建DaraFrame数组,仅为个人学习记录+复习,如有错误请指出。

注意:在pandas内部往往会用到很多与numpy有关的函数,千万不要弄混,一定铭记numpy和pandas是两个不同的三方库,pandas是在numpy的基础上建立的三方库,其很多内容都与numpy有着异曲同工之妙。

1. 创建Series数组:

顾名思意,Series在英文中表示的是:系列。好,这个数组指的就是一列。(注意是一列,不是一行)

由于单为一列,所以在创建Series数组的时候,可以使用np.arange()输出一段一维数组,再放到np.Series()中。

sm = np.arange(0, 20, 2)
smp = pd.Series(sm)
# !!!!这里注意!!!!
# np.arange()函数的参数,要么只写一个end,要么三个全写,不能只写end,step,不写start,会返回空数 # 组
print(sm)
print(pd.Series(sm))
'''
[ 0  2  4  6  8 10 12 14 16 18]
打印出来的Series数据结构如下:
0     0
1     2
2     4
3     6
4     8
5    10
6    12
7    14
8    16
9    18
dtype: int32
'''

会发现,前面多了一串数字(0~9),很眼熟,像是索引。没错,这就是Series默认的index,如果你觉得报看,可以换掉(具体操作如下);你要说这表也没个column,这个没办法满足,其函数内部米有。那能加吗?能,放在DataFrame里面就可以了。

smp = pd.Series(sm, index=[7, 5, 3000, 0, 2, 4, 1, 8, 73, 88])
print(smp)
'''
7        0
5        2
3000     4
0        6
2        8
4       10
1       12
8       14
73      16
88      18
dtype: int32
'''

至此,Series的大部分内容都已经过了一遍,用pycharm的时候会发现,其参数还有一个dtype=,这个已经是老朋友了,可以更改数据类型。

2. 创建DataFrame数组:

DataFrame和Series最大的区别就是,DataFrame为多行多列,Series为多行单列。

使用字典来创建DataFrame:

chart = {
    "ID": ["1", "2", "3", "4", "5"],
    "name": ["abi", "baxi", "cine", "deker", "ebby"],
    "gender": [True, False, True, False, False],
    "age": [19, 10, 29, 19, 29],
    "score": [99, 40, 89, 70, 30]
}
finalChart = pd.DataFrame(chart)

使用列表来创建DataFrame:

chart1 = pd.DataFrame([[1, "abi", True, 19, 99], [2, "baxi", False, 10, 40]],
                        columns=["ID", "name", "gender", "age", "score"])

使用Series数组创建DataFrame:

dd = {'one': pd.Series([11, 22, 33, 99], index=[1, 2, 3, 4]),
      'two': pd.Series([55, 66, 7], index=[1, 2, 3], dtype=int)}
dc = pd.DataFrame(dd)

'''
   one   two  
1   11  55.0    
2   22  66.0   
3   33   7.0    
4   99   NaN    
'''

这里注意:Series是没有列标签的,因此我们需要用字典赋予其一个列标签。没有对齐的部分则用NAN补齐。

使用numpy函数创建DataFrame:

am1 = pd.DataFrame(np.random.rand(1, 3), columns=['a', 'b', 'c'])
am2 = pd.DataFrame(np.random.rand(3, 3), columns=['a', 'b', 'c'])
print(am1, am2)
'''
          a         b         c
0  0.561229  0.789217  0.438709       a         b         c # 从下一行开始才是第二个数组
0  0.415782  0.719267  0.210404
1  0.363728  0.759833  0.190822
2  0.332160  0.196373  0.290467
'''

除了使用np.random()下的函数之外,还可以使用np.arange():

wb = pd.DataFrame(np.arange(20).reshape(5, 4), columns=['a', 'b', 'c', 'd'])
'''
    a   b   c   d
0   0   1   2   3
1   4   5   6   7
2   8   9  10  11
3  12  13  14  15
4  16  17  18  19
'''

 

3. 在DataFrame数组中添加其他DataFrame数组——concat()函数:

chart = {
    "ID": ["1", "2", "3", "4", "5"],
    "name": ["abi", "baxi", "cine", "deker", "ebby"],
    "gender": [True, False, True, False, False],
    "age": [19, 10, 29, 19, 29],
    "score": [99, 40, 89, 70, 30]
}
finalChart = pd.DataFrame(chart)

bChat = {
    "height": [12, 13, 13, 14, 13]
}
bChat1 = pd.DataFrame(bChat)

# 以上创建两个DataFrame
'''axis=1'''
finalChart = pd.concat([finalChart, bChat1], axis=1)
print(finalChart)
'''
  ID   name  gender  age  score  height
0  1    abi    True   19     99      12
1  2   baxi   False   10     40      13
2  3   cine    True   29     89      13
3  4  deker   False   19     70      14
4  5   ebby   False   29     30      13
'''

finalChart = pd.concat([bChat1, finalChart], axis=1)
'''两个数组位置调换'''
print(finalChart)
'''
   height ID   name  gender  age  score
0      12  1    abi    True   19     99
1      13  2   baxi   False   10     40
2      13  3   cine    True   29     89
3      14  4  deker   False   19     70
4      13  5   ebby   False   29     30
'''

pandas里面也可以使用append(),不过会出现即将删除append()的提示,并建议使用concat(),可以认为这两个函数是相同的,但是,千万不要和numpy中的append()函数混淆!

4. DataFrame数组中列与列之间的运算:

加减乘除:(举两个例子:加法、求整数商)

dd = {'one': pd.Series([11, 22, 33, 99], index=[1, 2, 3, 4]),
      'two': pd.Series([55, 66, 7], index=[1, 2, 3], dtype=int)}
dc = pd.DataFrame(dd)

dc['three'] = pd.DataFrame([23, 4, 566, 88], index=[1, 2, 3, 4])
'''
   one   two  three
1   11  55.0     23
2   22  66.0      4
3   33   7.0    566
4   99   NaN     88
'''

'加法'
dc['four'] = dc['three'] + dc['two']
print(dc)
'''
   one   two  three   four
1   11  55.0     23   78.0
2   22  66.0      4   70.0
3   33   7.0    566  573.0
4   99   NaN     88    NaN
'''

'求整数商'
dc['four'] = dc['three'] // dc['two']
print(dc)
'''
   one   two  three  four
1   11  55.0     23   0.0
2   22  66.0      4   0.0
3   33   7.0    566  80.0
4   99   NaN     88   NaN
'''

5. 两种删除列的方法——del 和pop():

del:

del 类似于字典中删除键值对的操作,严格意义上来说,算不上是函数吧……瞎猜的。可以删除任意一列。

del dc['three']
print(dc)
'''
   one   two   four
1   11  55.0   78.0
2   22  66.0   70.0
3   33   7.0  573.0
4   99   NaN    NaN
'''

pop():

依然可以删除任意一列。

dc.pop('two')  # 不需要赋值,直接在数组上进行运算,pop函数内传入的参数名就是列名。
print(dc)
'''
   one   four
1   11   78.0
2   22   70.0
3   33  573.0
4   99    NaN
'''

忽然想起,栈(列表)中的pop不传入参数,是否默认挤出最末尾的元素?如果这里不传入参数会发生什么?

会报错。


日拱一卒,功不唐捐。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python: pandas与numpy(一)创建DataFrame数组与数组的简单操作 的相关文章

  • 有什么好的适用于 Google App Engine 应用程序的 AJAX 框架吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的 Google App Engine 应用程序中实现 AJAX 因此我正在寻找一个好的
  • 是否可以在 IPython 控制台中显示 pandas 样式?

    是否可以显示熊猫风格 https pandas pydata org pandas docs stable user guide style html在 iPython 控制台中 Jupyter 笔记本中的以下代码 import panda
  • 创建 xyz 海拔数据的曲面图

    我正在尝试用 python 创建一座山的表面图 其中我有一些 xyz 数据 最终结果应该类似于that https i stack imgur com rKQV0 png 该文件的格式如下 616000 0 90500 0 3096 712
  • 在Python中将大文件(25k条目)加载到dict中很慢?

    我有一个大约有 25000 行的文件 它是 s19 格式的文件 每行就像 S214780010 00802000000010000000000A508CC78C 像这样的事情怎么样 我做了一个测试文件 只有一行S21478001000802
  • 删除 tkinter 文本默认绑定

    我正在制作一个简单的 tkinter 文本编辑器 但我想要所有默认绑定文本小部件如果可能的话删除 例如当我按Ctrl i它默认插入一个制表符 我制作了一个事件绑定来打印文本框中有多少行 我将事件绑定设置为Ctrl i以及 当我运行它时 它会
  • Discord.py 斜线命令在 cogs 中不起作用

    我正在构建一个不和谐的机器人 并且想要在 cogs 内使用斜杠命令 但这些命令不显示或工作 这是代码 cog guild ids 858573429787066368 861507832934563851 class Slash comma
  • Asyncio:从未检索到任务异常的怪异

    假设我有一个简单的代码 import asyncio async def exc print 1 0 loop asyncio get event loop loop create task exc try loop run forever
  • Python 中“is”运算符的语义是什么?

    如何is运算符确定两个对象是否相同 它是如何工作的 我找不到它的记录 来自文档 http docs python org reference datamodel html 每个对象都有一个身份 一个类型 和一个值 对象的身份 一旦发生就永远
  • 使用 Python-VLC 的 PyInstaller:无属性“media_player_new”错误

    我使用 Python VLC 创建视频播放器 并使用 PyInstaller 在 Windows 10 计算机上生成可执行文件 最初 它给了我错误 Import Error Failed to load dynlib dll libvlc
  • Pygame:有人可以帮我实现双跳吗?

    我知道已经有其他关于此问题的帖子了 但我的运动系统与我发现的有点不同 所以随后我问这个问题 我的运动系统基于一个名为的命名元组Move up left right down 然后就是这个 def update self move block
  • “KMeans”对象没有属性“k”

    我使用 Yellowbrick 包绘制数据集的肘部曲线 以使用 KMeans 作为模型找到数据集的最佳簇数 我正在使用 Scikit learn KMeans 和 Yellowbrick kelbowvisualizer 函数 生成了肘部曲
  • 在字符串内打印单引号

    我想输出 XYZ s ABC 我在Python IDLE中尝试了以下3条语句 第一条和第二条语句输出 a before 带打印功能的第三条语句不输出 before 作为 Python 新手 我想了解为什么 之前输出 在第 1 条和第 2 条
  • 在Python中随机交错2个数组

    假设我有两个数组 a 1 2 3 4 b 5 6 7 8 9 我想将这两个数组交错为变量 c 注意 a 和 b 不一定具有相同的长度 但我不希望它们以确定性的方式交错 简而言之 仅仅压缩这两个数组是不够的 我不想要 c 1 5 2 6 3
  • 如何将 django ModelForm 字段显示为不可编辑

    接受我的初步教训django ModelForm 我想让用户能够编辑博客中的条目 BlogEntry has a date postedTime title and content 我想向用户展示一个编辑表单 其中显示所有这些字段 但仅包含
  • 为什么我会在 Python 字符串格式中使用除 %r 之外的其他内容?

    我偶尔会使用 Python 字符串格式 这可以像这样完成 print int i Float f String s 54 34 434 some text 但是 这也可以这样做 print int r Float r String r 54
  • 本地主机上的 Google App Engine GQL 查询

    我正在 Google App Engine Windows 上的 SDK 版本 1 7 0 上开发一个应用程序 我需要经常测试该应用程序 并且此测试涉及数据存储上的大量 GQL 查询 您可以在 App Engine 管理界面的浏览器中在线运
  • 如何创建简单的梯度下降算法

    我正在研究简单的机器学习算法 从简单的梯度下降开始 但在尝试用 python 实现它时遇到了一些麻烦 这是我试图重现的示例 我获得了有关房屋的数据 居住面积 以英尺为单位 和卧室数量 以及最终的价格 居住面积 英尺2 2104 卧室 3 价
  • 将二进制数转换为包含每个二进制数的数组

    我试图将二进制值转换为每个 1 0 的列表 但我得到默认的二进制值而不是列表 我有一个字符串 我将每个字符转换为二进制 它给了我一个列表 其中每个字符都有一个字符串 现在我试图将每个字符串拆分为值为 0 1 的整数 但我什么也得不到 if
  • 在Python中使用os.makedirs创建目录时出现权限问题

    我只是想处理上传的文件并将其写入工作目录中 该目录的名称是系统时间戳 问题是我想以完全权限创建该目录 777 但我不能 使用以下代码创建的目录755权限 def handle uploaded file upfile cTimeStamp
  • 美丽的汤刮 - 登录凭据不起作用

    尝试使用登录凭据抓取页面 payload email gmail com password urls login url https www spotrac com signin url https www spotrac com nba

随机推荐

  • Transformer详细解读与预测实例记录

    文章目录 Transformer详细解读与预测实例记录 1 位置编码 1 输入部分 2 位置编码部分 2 多头注意力机制 1 基本注意力机制 2 transformer中的注意力 3 残差和LayerNorm 1 残差 2 LayerNor
  • 错误Unexpected token × in JSON at position 3的解决

    Uncaught SyntaxError Unexpected token in JSON at position 3 at JSON parse
  • Tableau常用函数

    1 ABS number 返回给定数字的绝对值 ABS 7 7 ABS 字段 字段中包含的所有数字的绝对值 2 ATTR expression 如果它的所有行都有一个值 则返回该表达式的值 否则返回星号 会忽略 Null 值 其实维度也可以
  • JAVA_常用API-Math

    目录 前言 一 Math类 Max类的常用方法 例题 1 取绝对值 返回正数 输出结果为 2 向上或者向下取整 3 求指数次方 以及四舍五入 4 生成随机数random 范围是 0 0 1 0 0 0 1 0 总结 前言 本篇文章作为作者学
  • 我们人类与人工智能技术究竟是怎样的关系?

    图片来自pixabay com 来源 赛先生 撰文 爱德华 阿什福德 李 加州大学伯克利分校教授 责编 李珊珊 摘要 数字技术正在和人类文明协同进化 我们依赖技术而生存 技术也依赖我们 这种合作共生的趋势越来越明显 技术并不是所谓的 应用科
  • 解决:java -version,java,javac不是内部或外部命令,也不是可运行的程序 或批处理文件。

    命令行输入java java version javac都显示不是内部或外部命令 1 首先查看了自己的环境变量 经过学习确实都是环境变量出现问题 之前的环境变量都是 JAVA HOME bin 全部换成了绝对路径如 C Program Fi
  • 弃用http改用https的缘故,与密钥的使用,证书意义

    为何弃用http协议 在十几年前 我们的传输协议是http协议 为何到了如今改成了https协议呢 为了安全的考虑 在http协议中 我们的内容是透明的 不被保护的 在黑客等恶意分子的面前 信息极其任意被破译 让我们看看客户端如果使用htt
  • spring笔记1(基础(IoC控制反转、DI依赖注入)、整合Junit、整合web)

    目录 前言 1 spring框架概述 1 什么是spring 1 2 spring由来 1 3spring核心 1 4spring优点 1 5 spring体系结构 2入门案例 IoC 掌握 2 1 导入jar包 2 2 目标类 2 3 配
  • R中关于金融的包

    quantmod 数据和图形 TTR 技术分析 blooter 账户管理 FinancialInstrument 金融产品 quantstrast 策略模型 PerformanceAnalytics 表现分析 这些R包依然在发展中 有些还被
  • 原生js导出excel,并保留样式

    前端表格导出excel一般我们使用xlsx等插件导出 但如果想保留表格的样式导出的话 还需要再使用其他的插件才行 如要保留宽度 字体颜色 背景颜色等样式 这里可以直接使用简短的 原生js方法即可导出带样式的excel文件 直接上代码 原生表
  • 股票实时数据接口

    From http chenpeng info html 1058 做了一点股票分析数据准备 做了个均线图 http stock chenpeng info randomone 查询股票走势请移步 http stock chenpeng i
  • Java内存模型

    Android开发中 存在大量并发的情况 因此也会遇到很多线程安全问题 在查询线程安全相关资料时 通常会查到Java内存模型的知识点 Java内存模型的主要目标是定义程序中各个变量的访问规则 即在虚拟机中将变量存储到内存和从内存中取出变量这
  • 如何一次让ChatGPT输入多个版本的内容供你选择

    随着人工智能的不断进步 我们对于AI工具的需求也在日益增加 尤其是像GPT这样的高级工具 单一的答案输出已经不能满足用户的多元需求 实际上 当我们面对一个问题时 多种答案的输出能让我们更全面地了解和思考 这样我们就可以从各种可能的答案中选择
  • Nikitosh and xor【字典树+dp】

    题目链接 比较明显的 正向一个推过去的字典树 再反向退回来的一个字典树 然后异或和用差分的方式解决 字典树一定是要从第29位开始往下的 千万别从第0位往上 include
  • JavaScript常用的5种排序算法,你都掌握了吗?

    今天给大家带来5种最常见的前端排序算法 注释非常详细 欢迎讨论 1 冒泡排序 Bubble Sort 定义 冒泡排序是一种简单的比较排序算法 它重复地比较相邻的元素 并将顺序错误的相邻元素交换位置 直到整个序列排序完成 代码示例 funct
  • int 0x80系统调用的参数传递规则

    系统调用的参数传递规则 传递给系统调用的参数则必须按照参数顺序依次存放到寄存器ebx ecx edx esi edi中 当系统调用完成之后 返回值存放在eax中 A 当系统调用所需参数的个数不超过5个的时候 执行 int 0x80 指令时
  • Chroom书签同步

    Chroom自带书签管理 而且有些管理书签的插件 我感觉自带书签管理栏就能满足我的个人需求 但是有一个问题 当我换了电脑后 原来的书签怎么同步 我为什么要使用Chroom 用其他浏览器广告太多了 比如360 也试着使用国内的其他浏览器 感觉
  • 如何在vscode配置php开发环境

    3 下载并安装vscodehttps code visualstudio com 下载的是一个压缩包 将其解压至一个目录 4 在vscode中安装调试插件右侧栏中点击扩展 输入xdebug 出来的php debug 点击安装 在菜单栏 文件
  • C++ 常用容器及其使用方法

    文章目录 本章内容概述 一 Vector 1 构造函数 2 增加函数 3 删除函数 4 属性函数 二 Unordered map 1 构造函数 2 增加函数 3 删除函数 4 属性函数 三 Stack 1 构造函数 2 访问方式 3 增加函
  • python: pandas与numpy(一)创建DataFrame数组与数组的简单操作

    目录 前言 1 创建Series数组 2 创建DataFrame数组 使用字典来创建DataFrame 使用列表来创建DataFrame 使用Series数组创建DataFrame 使用numpy函数创建DataFrame 3 在DataF