Python数据分析之pandas基本数据结构:Series、DataFrame!

【解决问题】raise Exception(“Data must be 1-dimensional“) Exception: Data must be 1-dimensional 数组从可能的二维形式(例如,(n, 1))转换为一维形式((n,)),这样就可以正确地创建DataFrame并保存为CSV文件了。转换为Pandas DataFrame时。通常,在读取CSV文件后,即使数据只有一列,Pandas也会将其作为二维数组处理。不是一个一维数组,而Pandas的DataFrame要求每个列是一维的。方法来解决这个问题,这将把二维数组转换为一维数组(如果可能)。您需要确保在创建DataFrame之前,根据您提供的错误信息,问题出在尝试将。 阅读详情

1引言

本文总结Pandas中两种常用的数据类型:

(1)Series是一种一维的带标签数组对象。

(2)DataFrame,二维,Series容器

Python资源共享群:626017123

2 Series数组

2.1 Series数组构成

Series数组对象由两部分构成:

  • 值(value):一维数组的各元素值,是一个ndarray类型数据。
  • 索引(index):与一维数组值一一对应的标签。利用索引,我们可非常方便得在Series数组中进行取值。

如下所示,我们通过字典创建了一个Series数组,输出结果的第一列就是索引,第二列就是数组的具体值。

>>> import pandas as pd
>>> a =pd.Series([102, 212, 332, 434])
>>> a
0 102
1 212
2 332
3 434
dtype: int64

也可以在创建时手动指定索引:

>>> a = pd.Series([102, 212, 332, 434], index=['第一列', '第二列', '第三列', '第四列'])
>>> a
第一列 102
第二列 212
第三列 332
第四列 434
dtype: int64

利用索引,我们可以更加方便得在数组中进行取值:

>>> a['第一列']
102
>>> a[['第一列', '第二列']]
第一列 102
第二列 212
dtype: int64

当然,你也可以使用以往的数字下标从数组中取值:

>>> a[0]
102
>>> a[[0,1]]
第一列 102
第二列 212
dtype: int64

2.2 创建Series数组

(1)通过list、tuple创建

>>> pd.Series([123, 321, 345,543]) # 传入一个list
0 123
1 321
2 345
3 543
dtype: int64
>>> pd.Series((123, 321, 345,543)) # 传入一个元组
0 123
1 321
2 345
3 543
dtype: int64

(2)通过传入一维numpy数组对象创建

>>> import numpy as np
>>> n = np.arange(3) # 创建一个一维的numpy数组
>>> pd.Series(n)
0 0
1 1
2 2
dtype: int32

注意:传入的numpy必须是一维的数组,否则会报错。

>>> n = np.arange(6).reshape((2,3))
>>> pd.Series(n)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
……
packages\pandas\core\internals\construction.py", line 729, in sanitize_array
raise Exception("Data must be 1-dimensional")
Exception: Data must be 1-dimensional

(3)通过传入字典创建

通过字典创建Series数组时,字典的key会自动被设置成Series数组的索引:

>>> pd.Series({'name':'张三', 'age':40, 'weight':140})
name 张三
age 40
weight 140
dtype: object

(4)通过传入一个标量值创建

当传入一个标量值时,必须传入index索引,Series会根据传入的index参数来确定数组对象的长度:

>>> a = pd.Series(10, index=['a', 'b', 'c', 'd'])
>>> a
a 10
b 10
c 10
d 10
dtype: int64

2.2 Series数组常用属性

Series数组的属性与numpy数组属性很是类似,如下表所示:

Series.index

以列表的形式返回数组的索引

Series.values

以列表的形式返回数组的所有值

Series.dtype

返回基础数据的dtype对象,数据类型

Series.shape

返回基础数据形状的元组

Series.ndim

根据定义1,数组的维数

Series.size

返回数组中的元素数

Series.base

如果与另一数组共享数据,则返回基础数组

Series.T

转置

Series.empty

判断数组是否为空

Series.name

返回系列的名称

3 DataFrame数组

3.1 DataFrame数组构成

DataFrame数组是Pandas中另一种数据结构,其数据的呈现方式类似于Excel这种二维表结构。相比于Series数组,DataFrame可以存放多维数据,所以DataFrame不仅仅有索引,还有列名,如下所示:

>>> d = {'one': [1, 2, 3, 4], 'two':['一', '二', '三', '四']}
>>> pd.DataFrame(d)
one two
0 1 一
1 2 二
2 3 三
3 4 四
>>> df.index
RangeIndex(start=0, stop=4, step=1)
>>> df.columns
Index(['one', 'two'], dtype='object')

可以看到,DataFrame数组可以包含多维数据,类似于一张二维表。与Series类似,DataFrame数组也有一个index索引,在不指定索引时,通常会自动生成从零开始步长为1的索引。此外DataFrame数组还有一个列名,索引和列名是从数组中挑选数据的重要依据。

3.2 创建DataFrame数组

(1)通过字典创建

通过字典来创建DataFrame数组时,字典的键将会自动成DataFrame数组的列名,字典的值必须是可迭代对象,例如Series、numpy数组、list、tuple等,不同Series数组中对应的缺失值pandas将自动填充NaN:

以list列表为值的字典:

>>> d = {'one': [1, 2, 3, 4], 'two':['一', '二', '三', '四']}
>>> pd.DataFrame(d)
one two
0 1 一
1 2 二
2 3 三
3 4 四

以numpy数组为值得字典:

>>> d = {'zero': np.zeros((3,)), 'ones': np.ones((3,)), 'twos':np.full((3,),2)}
>>> pd.DataFrame(d)
zero ones twos
0 0.0 1.0 2
1 0.0 1.0 2
2 0.0 1.0 2

以Series为值的字典:

>>> d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
>>> df = pd.DataFrame(d) # 创建DataFrame数组
>>> df
one two
a 1.0 1.0
b 2.0 2.0
c 3.0 3.0
d  NaN 4.0

无论是上面那种类型对象为值的字典,都可以通过下面的方式重新指定列索引:

>>> pd.DataFrame(d, index=['d', 'b', 'a'])
one two
d NaN 4.0
b 2.0 2.0
a 1.0 1.0

当然,也可以在手动指定列名,不过行索引对应的键数据才会传入新建的数组中:

>>> pd.DataFrame(d, index=['d', 'b', 'a'], columns=['two', 'three'])
two three
d 4.0 NaN
b 2.0 NaN
a 1.0 NaN

(2)通过列表创建

通过列表创建DataFrame数组时,列表的每一个元素必须是字典,这样,字典的键将作为列名。

>>> d = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
>>> pd.DataFrame(d)
a b c
0 1 2 NaN
1 5 10 20.0
>>> pd.DataFrame(d, index=['第一行', '第二行']) # 重新指定索引
a b c
第一行 1 2 NaN
第二行 5 10 20.0

(3)通过功能函数创建

我们还可以通过诸如from_dict()、from_records()这类的功能函数来创建DataFrame数组,以from_dict()为例:

>>> d = {'A': [1, 2, 3], 'B': [4, 5, 6]}
>>> pd.DataFrame.from_dict(d)
A B
0 1 4
1 2 5
2 3 6

如果需要让字典的键作为索引,重新指定列名,可以传入orient='index'参数,然后重新传入列名:

>>> pd.DataFrame.from_dict(d,orient='index', columns=['one', 'two', 'three'])
one two three
A 1 2 3
B 4 5 6

3.3 DataFrame数组的常用属性

DataFrame数组的属性与Series数据几乎一样,只是多了一个保存列名信息的columns属性,参看上面表格中的Series属性就行了。

零基础上手Python数据分析 (8):Pandas 核心数据结构 Series 和 DataFrame 我们已经完成了 Python 编程基础的入门,掌握了 Python 语法、数据类型、数据结构、文件操作和异常处理等核心知识。从今天开始,我们将正式踏入,学习库!是 Python 数据分析领域的库,没有之一!它提供了高性能、易于使用的数据结构和数据分析工具,使得 Python 成为数据分析的强大武器。Pandas 的地位,就如同 Excel 在电子表格软件中的地位,但 Pandas 的功能远比 Excel 强大和灵活。Pandas 最核心的数据结构就是和。 阅读详情

相关推荐

【python】数据分析——Pandas、Series、DataFrame

Pandas 是一个基于 NumPy 的 Python 数据处理库,提供了高效的数据结构和数据分析工具,使得在处理和分析结构化数据变得更加简单和快速。总之,Pandas 是一个功能强大且灵活的数据处理工具,它使得在 Python 中进行数据清洗、处理和分析变得更加容易和高效。它广泛应用于数据科学、机器学习、金融分析和其他数据相关的领域。

urge的博客 1052

python中出现“Data must be 1-dimensional”问题的解决办法

【代码】python中出现“Data must be 1-dimensional”问题的解决办法。

qq_42518889的博客 1万+

深入解析 Pandas 核心数据结构:Series 与 DataFrame

在数据分析和科学计算领域,Pandas 是 Python 生态中最受欢迎的库之一。它提供了高效、灵活且易于使用的数据结构,使得数据清洗、转换和分析变得更加便捷。Pandas 的核心数据结构包括 Series 和 DataFrame,它们为处理结构化数据提供了强大的支持。本文将深入探讨这些数据结构的特点、创建方式、常用操作以及实际应用场景,帮助读者全面掌握 Pandas 的核心功能。

vvilkin的学习备忘 1258

《Python数据分析基础 Clinton W.Brownley》第三章最后一段代码,Data must be 1-dimensional的解决

Data must be 1-dimensional的解决方法

NNNightglow的博客 895

pandas中Series和DataFrame用法详解

Pandas是Python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,2009年底开源。Pandas的名字来源于“panel data”(面板数据)和“Python data analysis”(Python数据分析)。Pandas提供了大量函数和方法,用于高效地操作大型数据集,使Python成为强大而高效的数据分析环境。在Pandas库中,Series和DataFrame是两种核心的数据结构,它们为数据分析和处理提供了强大的支持。下面我将详细解释。

cylz007的博客 1101

【Python】数据分析:结构化数分工具 Pandas | Series 与 DataFrame | 读取CSV文件数据

本章为基础前置,将介绍 Python 经典结构化分析工具 Pandas,掌握 Series 与 DataFrame 的用法,并学习如何使用 CSV 读取文件数据,为后续实战练习打下厚实的基础。

有道无术, 术尚可求。有术无道, 止于术。 3851

Python数据分析之pandas基本数据结构:Series、DataFrame

1引言 本文总结Pandas中两种常用的数据类型: (1)Series是一种一维的带标签数组对象。 (2)DataFrame,二维,Series容器 2 Series数组 2.1 Series数组构成 Series数组对象由两部分构成: 值(value):一维数组的各元素值,是一个ndarray类型数据。 索引(index):与一维数组值一一对应的标签。利用索引,我们...

weixin_30851409的博客 675

pgpool-II踩坑日记两则

最近结合pgpool-II进行postgreSQL高可用的部署,过程非常煎熬,作为新手,公司也没有前辈熟悉postgreSQL,只能自己摸索。好在已经搞明白了,把困扰我很长时间的两个问题分享一下。 1. show pool_nodes 第一个问题就是 show pool_nodes 的使用,照着教程建好后,在哪里执行这个指令呢?我在pg服务器上怎么执行这个指令都显示 ERROR: unrecognized configuration parameter "pool_nodes",一度怀疑人生。翻阅了很多资料

zhaizhai6_6的博客 4540

pandas报错,值必须是一维列表 ValueError: Data must be 1-dimensional

解决方法,把二维列表转为一维,代码如下:

m0_58272896的博客 2万+

夏令营纪实——东南大学计科院&PALM实验室面试全解析

本文详细解析了东南大学计科院与PALM实验室夏令营的面试全流程,包括前期准备、技术考察、项目经验深挖等关键环节。特别针对自然语言处理(NLP)和机器学习(ML)领域的高频问题提供应对策略,帮助申请者提升面试表现。文章还分享了实用的准备技巧和面试经验,为有意向参加该夏令营的学生提供宝贵参考。

convnet3designer的博客 459

YOLOV8多模态(可见光+红外光目标检测任务,基于Ultralytics官方代码实现)

torch 2.3.1 torchvision 0.18.1 Python 3.8.19 tensorrt 8.5.3.1DroneVehicle数据集下载地址DroneVehicle 数据集由无人机采集的 56,878 张图像组成,其中一半是 RGB 图像,其余是红外图像。我们为这 5 个类别制作了丰富的注释,其中包含定向边界框。其中,汽车在 RGB 图像中有 389,779 个注释,在

Mjy的博客 7585

pandas入门:Series、DataFrame、Index基本操作都有了!

导读:pandas是一款开放源码的BSD许可的Python库。它基于NumPy创建,为Python编程语言提供了高性能的、易于使用的数据结构和数据分析工具。pandas应用领域广泛,包括...

华章IT官方博客 1万+

来!简单了解一下计算机发展史!

​ 1936年,英国数学家阿兰・麦席森・图灵提出了一种抽象的计算模型——图灵机( Turing machine)。图灵机,又称图灵计算机,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。​ 图灵机是一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。

m0_57290404的博客 2905

Python 数据分析三剑客之 Pandas(一):认识 Pandas 及其 Series、DataFrame 对象

文章目录【01x00】了解 Pandas【01x01】Axes3D 对象创建方法一:Axes3D(fig) 这里是一段防爬虫文本,请读者忽略。 本文原创首发于 优快云,作者 TRHX。 博客首页:https://itrhx.blog.youkuaiyun.com/ 本文链接:https://itrhx.blog.youkuaiyun.com/article/details/106676693 未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃! 【01x00】了解 Pandas Pandas 是 Python 的.

BOB'S BLOG 4871

华为OD机试真题 新系统 9月20号 【字符串分组求和】

华为OD新系统机试真题【字符串分组求和】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【字符串分组求和】解析。

qq_45776114的博客 623

ESM2蛋白预训练模型 蛋白质、氨基酸向量表示

参考: https://github.com/facebookresearch/esm https://huggingface.co/facebook/esm2_t33_650M_UR50D https://esmatlas.com/resources?action=fold tokenizer_对输入蛋白会头尾添加cls、eos特殊字符,占两个字符长度 参考:https://github.com/facebookresearch/esm 直接clone下来代码

weixin_42357472的博客 1万+

【Python】pandas:基本数据结构(Series和DataFrame),创建Series和DataFrame,将Series和DataFrame保存到文件 或从文件获取

【Python】pandas:基本数据结构(Series和DataFrame),创建Series和DataFrame,将Series和DataFrame保存到文件 或从文件获取

yannan20190313的博客 1013

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python学习——pandas库的使用之series及DataFrame创建、查看、切片、运算

Series与DataFrame的创建、索引、切片及运算

小伟的博客 6325

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python之三大基本库——Pandas(1)

本文介绍了Python数据分析库Pandas的基本概念和使用方法。Pandas是基于NumPy构建的开源库,专注于结构化数据处理,提供DataFrame和Series两种核心数据结构,支持数据清洗、统计分析等功能,适用于金融分析、机器学习预处理等场景。文章详细说明了Pandas的安装方法(推荐使用清华镜像源),并强调要掌握Series和DataFrame这两个核心数据结构才能熟练使用Pandas。这是Pandas系列教程的第一篇,后续将深入讲解更多内容。

m0_61746796的博客 5827

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Pandas数据结构详解Series与DataFrame

本文详细介绍了Pandas中两种核心数据结构:Series和DataFrame。Series是一维带标签数组,可通过多种方式创建,并支持丰富的统计和操作方法。DataFrame是二维表格结构,包含多个Series列,适用于复杂数据分析。文章通过代码示例展示了如何创建、访问和操作这两种数据结构,包括数据筛选、运算和列操作等实用技巧,为Python数据分析提供了基础指南。

lyx3313696759的博客 1563

python数据分析:介绍pandas库的数据类型Series和DataFrame

DataFrame 是一个二维的表格数据结构,具有标记的轴(行和列)。创建的series结构,默认索引从0开始(像list的索引一样),但是可以指定索引。3)从Numpy 数组创建DataFrame并指定列名和索引​​​​​​​。举例:定义一个series结构数据,打印下上面方法获取的数据​​​​​​​。举例:定义一个series结构数据,打印删除NaN值后的数据​​​​​​​。举例:定义一个series结构数据,打印去重后的数据​​​​​​​。举例:读取csv文件内容,并转换为字典​​​​​​​。

kymppcds的博客 1224

Pandas数据分析 【Series | DataFrame】

其实pandas市面上教程很多,但是多数缺少实操,这个库长时间不用老能忘记,为了方便自己复习,这次我找了100个题目敲一遍,以博客的方式记录,减少自己之后的回顾成本。

shijiaqingsnfx的博客 1703

「pandas」python pandas 初步、数据结构Series、DataFrame、MultiIndex

以numpy为基础、借力numpy模块在计算性能高的优势基于matplotlib,能够简便画图了解结果独特的数据结构:Series、DataFrame、MultiIndex。

qq_44906900的博客 1285

python基础-----Pandas的DataFrame和pandas.core.series.Series

两种数据类型的比较 参考:https://blog.youkuaiyun.com/LZH_12345/article/details/79798787 总结:两种数据的横向属性是index,而只有DataFrame的columns属性指的是纵向属性 Series的数据只是有index和index.name属性,没有columns属性,而DataFrame数据有columns属性 其中,series的数据更像是...

weixin_43794311的博客 1万+
上一篇: Python程序中使用MySQL数据库!
下一篇: Python Web Flask源码解读!启动流程!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值