Pandas DataFrame的创建方法(Create DataFrame)

news2024/9/23 11:17:40

pandas是一个第三方数据分析库,其集成了大量的数据模型和分析工具,可以方便的处理和分析各类数据。其中主要对象类型有Series,DataFrame和Index。本文介绍DataFrame对象的基本创建方法。

关于DataFrame的基础用法,可以查看下面的文章:
Python 利用pandas处理CSV文件(DataFrame的基础用法)

文章目录

  • 一、DataFrame的创建方法
    • 1.1 通过Python序列对象创建
    • 1.2 通过Python字典对象创建
    • 1.3 空值导致的类型转换
    • 1.4 通过其他函数创建

一、DataFrame的创建方法

DataFrame是包含索引的二维数据结构,数据结构和Excel或关系型数据库的表非常类似。重点是其在行、列上都是有标签的,其中纵向的标签叫做索引标签(定位每一行),横向的标签叫做列标签(定位每一列),标签也是Pandas中一种对象类型(Index对象)。
在这里插入图片描述

1.1 通过Python序列对象创建

Pandas中的的DataFrame函数可以将其他对象转换为DataFrame对象,传入列表或元组即可得到一个DataFrame对象(首次使用需要导入pandas):

import pandas as pd
df = pd.DataFrame([1,2,'a'])

在这里插入图片描述

这里看起来和Series很像,但注意DataFrame是包含列标签的,对比Series看一下区别:

s = pd.Series([1,2,'a']) 

在这里插入图片描述

创建一个二维DataFrame,默认索引标签和列标签都是从0开始方差为1的等差数列(0,1,2,3…):

df = pd.DataFrame([[1,2,3], [4,5,6]])

在这里插入图片描述

通过传入index和columns参数可以显式指定索引标签和列标签(为行和列命名,方便引用):

df = pd.DataFrame([[1,2,3], [4,5]], index=['a','b'], columns=['x','y','z'])

在这里插入图片描述

1.2 通过Python字典对象创建

通过Python字典创建DataFrame时,字典的键默认会变为列标签,索引标签为数字:

d = {'x':[1,2,3], 'y':[4,5,6]}
df = pd.DataFrame(d)

在这里插入图片描述

如果字典的值是Series,那么Series的标签会成为DataFrame的索引标签:

s1 = pd.Series([1,2,3], index=['a','b','c'])
s2 = pd.Series([4,5,6], index=['b','c','d'])
d = {'x':s1, 'y':s2}
df = pd.DataFrame(d)

在这里插入图片描述
可以看到DataFrame会包含s1和s2的所有标签,另一个Series中不存在的标签会使用NaN(Not a Number)填充。

我们可以把DataFrame看作由Series组成的字典,每一列都是一个Series,用字典的方式引用列标签就可以得到Series:

df['x']

在这里插入图片描述

1.3 空值导致的类型转换

这里有个小问题,我们创建的时候传入数字都是整型,为什么最终的DataFrame中变成了浮点型(float64)?答案是这里填入了NaN(即np.nan),这是NumPy中一个特殊的浮点类型,代表数字类型的空值,而Series是同构的,因此为了兼容NaN,需要将数据类型向高级的转换,所以整列的类型都变成了浮点型。

如果s1包含’d’索引,就不会出现这种转换,和上面的例子对比一下区别:

s1 = pd.Series([1,2,3,4], index=['a','b','c','d'])
s2 = pd.Series([4,5,6], index=['b','c','d'])
d = {'x':s1, 'y':s2}
df = pd.DataFrame(d)
df['x'].dypte
df['y'].dypte

在这里插入图片描述
x列由于不需要填充NaN,保留了整型(int64),而y列需要填入NaN,整列都被转换为浮点型(float64)。

1.4 通过其他函数创建

上面都是通过手搓的方式创建DataFrame,实际数据分析中我们较少使用这种方式,更常见的方式是从文件中读取数据转换为DataFrame对象。Pandas的read_csv, read_execl等函数可以从对应的文件格式中读取数据并返回DataFrame对象,在数据分析中更加常用,具体操作方法可以参考文首的链接。

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

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

相关文章

随机生成n个字节os.urandom(n)

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 随机生成n个字节 os.urandom(n) [太阳]选择题 下列输出结果中正确的是? import os print("【执行】a os.urandom(2)") a os.urandom(2) print("【显示】a ", a) pri…

【Qt】输入类控件QDail

目录 输入类控件QDail 例子:调整窗口不透明度 输入类控件QDail 使用QDail表示一个旋钮,通过鼠标拖动旋钮可以完成一些相关的属性。 核心属性 属性说明 value 持有的数值. minimum 最⼩值 maximum 最⼤值 singleStep 按下⽅向键的时候改变的步⻓…

【Java数据结构】---二叉树OJ

乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 ,Java 欢迎大家访问~ 创作不易,大佬们点赞鼓励下吧~ 文章目录 相同的树另一颗树的子树翻…

与copilot 结对编程系列 - log日志重复性检测 - 第4篇 - 网页UI界面

背景 细节可以参考这篇文章: 与copilot 结对编程系列 - log日志重复性检测 - 第1篇 - 总体介绍及效果展示 本文主要将数据库中存储的数据通过网页调用并展示出来, 以下是对详细解释。 web框架选择 当前场景使用 Flask 来展示网页信息. 主要原因如下: 轻量级和易…

如何使用JavaScript获取HTML表单中的值?

在开发中,我们经常需要获取用户在表单中输入的数据,然后进行处理或提交到服务器。今天我们就来聊一聊,如何用JavaScript获取HTML表单中的值。 使用 FormData 构造函数 FormData 是一个非常方便的工具,它可以把表单中的所有数据打包…

C++,std::chrono 详解

文章目录 1. 概述2. 时间点(Time Points)3. 时间间隔(Durations)4. 时钟(Clocks)5. 时间算术6. 时间转换7. 延时参考 1. 概述 std::chrono 是 C11 引入的一个库,用于处理日期和时间。它提供了一…

Unsloth 教程 - 如何微调 Llama-3并导出到 Ollama

本文翻译整理自:🦙 How to Finetune Llama-3 and Export to Ollama https://docs.unsloth.ai/tutorials/how-to-finetune-llama-3-and-export-to-ollama 文章目录 1、什么是Unsloth?2、什么是Ollama?3、安装Unsloth4、选择要微调的…

博弈论总结

公平组合游戏(Impartial Game)的定义如下: 游戏有两个人参与,二者轮流做出决策,双方均知道游戏的完整信息; 任意一个游戏者在某一确定状态可以作出的决策集合只与当前的状态有关,而与游戏者无关…

pytorch深度学习基础 6(简单的参数估计学习3)

上一篇博客说了如何拟合一条直线ywxb,今天我们现在使用PyTorch进行相同的曲线拟合 拟合y x*x -2x 3 0.1(-1到1的随机值) 曲线 给定x范围(0,3) 生成数据 import numpy as np import matplotlib.pyplot as plt import torch as t…

小程序学习day13-API Promise化、全局数据共享(状态管理)、分包

44、API Promise化 (1)基于回调函数的一部API的缺点:小程序官方提供的异步API都是基于回调函数实现的,容易造成回调地狱的问题,代码可读性、可维护性差 (2)API Promise化概念: 指…

Qt 环境搭建

sudo apt-get upadte sudo apt-get install qt4-dev-tools sudo apt-get install qtcreator sudo apt-get install qt4-doc sudo apt-get install qt4-qtconfig sudo apt-get install qt-demos编译指令 qmake -projectqmakemake实现Ubuntu20,04 与Windows之间的复制粘贴 安装o…

在C#中如何监控其它应用全屏

原文链接:https://www.cnblogs.com/zhaotianff/p/18338275 在C#中判断其它应用全屏可以有多种方案。我这里提供两种思路 使用定时器 在定时器中定时判断当前窗口的状态是否是最大化或者宽高是否等于桌面窗口的宽高。 这种方法我没有去尝试,凭个人经验…

复杂的编辑表格

需求描述 表格可以整体编辑;也可以单行弹框编辑;且整体编辑的时候,依然可以单行编辑 编辑只能给某一列(这里是参数运行值)修改,且根据数据内容的参数范围来判断展示不同的形式:input/数字输入/单…

小波卷积:为计算机视觉任务开辟新的参数效率之路

论文复述 这篇论文介绍了一种创新的卷积神经网络层——WTConv,它通过小波变换技术显著扩展了CNN的感受野,同时保持了参数效率。WTConv层能够实现对输入数据的多频率响应,增强了模型对形状而非纹理的特征识别能力,提高了在图像分类…

黑神话悟空不只是玩游戏 有人用它3天赚了85W

这几天你是不是在想办法升级电脑配置,买PS5玩黑神话悟空游戏,每一个男人看到那么好的游戏画面,都控制不住想玩,今天分享给大家一些资料,让你快速玩游戏的同时,还能挣点外快,黑神话悟空不只是玩游…

MATLAB 计算两点沿某个方向的间距(81)

MATLAB 计算两点沿某个方向的间距(81) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 上一章介绍了如何计算点到空间直线的距离,这里进一步的,我们也可以计算两个点,沿着某个方向的距离,这在很多处理中都会使用到,实际上就是将两点投影到该方向的直线,再计算间距…

线性表复习之初始化顺序表操作

线性表的顺序表示-初始化顺序表 代码 #include <stdio.h> #define MaxSize 10 // 定义最大长度typedef struct{int data[MaxSize]; // 申请空间&#xff08;静态&#xff09;int length; // 当前长度 }SqList;void InitList(SqList &L){for (int i 0; i < MaxS…

java-队列--黑马

队列 别看这个&#xff0c;没用&#xff0c;还是多刷力扣队列题 定义 队列是以顺序的方式维护一组数据的集合&#xff0c;在一端添加数据&#xff0c;从另一端移除数据。一般来讲&#xff0c;添加的一端称之尾&#xff0c;而移除一端称为头 。 队列接口定义 // 队列的接口定…

河南萌新联赛2024第(六)场:郑州大学

目录 A-装备二选一&#xff08;一&#xff09;_河南萌新联赛2024第&#xff08;六&#xff09;场&#xff1a;郑州大学 (nowcoder.com) 思路&#xff1a; 代码&#xff1a; B-百变吗喽_河南萌新联赛2024第&#xff08;六&#xff09;场&#xff1a;郑州大学 (nowcoder.com) …

3DsMax将两个模型的UV展到一个UV上面

3DsMax将两个模型的UV展到一个UV上面 3Dmax中的准备工作 创建一个方块&#xff0c;一个球体&#xff0c;模拟两个模型 添加修改器 打开UV编辑器&#xff0c;快速剥 使用缩放工具&#xff0c;缩放UV&#xff0c;放到一个位置 选择正方形&#xff1a;添加修改器&#xff0…