Pandas数据结构分析_pandas的数据结构_叮咚吾响应的博客-程序员秘密

技术标签: 数据分析  机器学习  数据结构  

一、pandas的基本数据结构

  1、pandas中有两个主要的数据结构,分别是:Series和DataFrame。

  2、Series:它是一个类似一维数组的对象,它能够保存任何类型的数据,主要由一组数据(各种Numpy数据类型)和与之相关的数据标签(索引)两部分构成。仅由一组数据也可以产生简单的Series对象。注意:Series的索引位于左边,数据位于右边,且索引值可以重复。

 

3、DataFrame:是一个类似于二维数组或表格(如excel)的对象,包含一组有序的列,它每列的数据可以是不同的数据类型(数值、字符串、布尔型等)。注意:DataFrame的索引不仅有行索引,还有列索,数据可以有多列,因此可以看做是由Series组成的字典。

二、Series

  1、创建Series

     (1)Series类对象

      

 

      (2) 创建Series类对象,并指定索引

    

Ø data:表示传入的数据。
Ø index:表示索引,唯一且与数据长度相等,默认会自动创建一个从0~N的整数索引

    (3)通过字典的方式创建:

           通过字典创建 Series 时,字典中的 key 组成 Series 中的索引,字典中的 values 组成 Series 中的 values。

         

 2、Series的属性

     为了能方便地操作Series对象中的索引和数据,所以该对象提供了两个属性indexvalues分别进行获取。

(1)获取s2的索引:

(2)获取s2的数据

 (3)直接使用位置索引来获取数据

      Series对象的属性有:dtype, index, values, name
      Series.index有属性:name

三、DataFrame

  1、DataFrame的创建

      (1)通过二维数组创建

            数据帧(DataFrame)是二维数据结构,即数据以行和列的表格方式排列。
            数据帧(DataFrame)的功能特点:潜在的列是不同的类型,大小可变,可以对行和列执行算术运算。
            pandas 中的 DataFrame 可以使用以下构造函数创建:
                   pandas.DataFrame(data, index, columns, dtype, copy)     

编号 参数 简介
1 data 数据采取各种形式,如:ndarray,series,map,lists,dict,constant和另一个 DataFrame。
 
2 index 对于行标签,要用于结果帧的索引是可选缺省值np.arrange(n),如果没有传递索引值。
 
3 columns 对于列标签,可选的默认语法是--np.arrange(n)。这只有在没有索引传递的情况下才是这样。
4 dtype 每列的数据类型。
5 copy 如果默认值为False,则此命令(或任何它)用于复制数据。

2、DataFrame的数据获取

  (1)可以直接通过列索引获取指定列的数据。

       a、列选择

 

b、列添加

 c、列修改

d、列删除

直接采用drop函数,设置axis=1,参数axis为1表示在行上面搜索对象并删除

 采用del的方法

 

 (2)如果需要获取指定行的的数据的话,需要通过 ix 方法来获取对应行索引的行数据。

a、行选择

b、行添加

c、行修改

d、行删除

四、索引对象

1、 Pandas中的索引都是Index类对象,又称为索引对象,该对象是不可以进行修改的,以保障数据的安全。Pandas还提供了很多Index的子类,常见的有如下几种:

1Int64Index:针对整数的特殊Index对象。

2MultiIndex:层次化索引,表示单个轴上的多层索引。

3DatetimeIndex:存储纳秒寄时间戳。

2、不管是 Series 还是 DataFrame 对象,都有索引对象。

3、索引对象负责管理轴标签和其他元数据(eg:轴名称等等)。

4、通过索引可以从 Series、DataFrame 中获取值或者对某个索引值进行重新赋值。

5、Series 或者 DataFrame 的自动对齐功能是通过索引实现的。
 

 

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_58387972/article/details/123302776

智能推荐

java中Map遍历的方法_weixin_30826761的博客-程序员秘密

1 public class testMap { 2 public static void main(String[] args) { 3 4 Map<String, String> map=new HashMap<String,String>(); 5 map.put("a", "aaaa"); 6 map....

SpringCloud应用骨架开发_最老程序员闫涛的博客-程序员秘密

我们每做一个新项目,通常都是从另一个项目把代码拷贝过来,然后在其上做开发。但是这种模式的一个比较大的问题就是会有很多上个项目的遗留代码。因此,开发一个公共的应用骨架系统,在开始其他新项目时,从这个骨架系统开始开发,是一个很好的选择。我们首先需要创建一个SpringBoot工程,我们可以使用:https://start.spring.io/如下所所:上图中比较关键的是从页面右侧“Add Dependencies”按钮弹出的列表中选择“Spring Web”。网站上的工具会生成一个基本的SpringB

Qt中窗体控件按照比例缩放,自适应窗口大小进行布局_qt比例布局_葱花叔的博客-程序员秘密

最近在做本科毕设,用到了Qt,无奈本人实在是太过于小白了,很多东西都进行了很久的探索,比如今天说到的窗体控件布局...一把辛酸泪    首先就是创建一个GUI文件,然后进行UI设计,这里就只需要从左边进行拖拽,这个很easy啦...    然后对其进行布局,比如右边,右下两个pushbutton我们可以对其进行水平布局,然后再将其整体与上边两个graphics view进行垂直布局!

Ubuntu系统设置静态IP-程序员秘密

首先要注意的是,不同版本的ubuntu系统设置静态ip的方式是不同的。这当然是由于随着系统版本的变化,对于网络的设置管理组件的变更。因此如下设置是与系统版本相关。一、查看系统版本lsb_release -a输出No LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 18.04.6 LTSRelease: 18.04Codename: bionic二、不同版本Ubuntu系统静态IP设置Ubunt

[Abp vNext 源码分析] - 19. 多租户_dotNET跨平台的博客-程序员秘密

一、简介ABP vNext 原生支持多租户体系,可以让开发人员快速地基于框架开发 SaaS 系统。ABP vNext 实现多租户的思路也非常简单,通过一个TenantId来分割各个租...

[Leetcode][程序员面试金典][面试题17.13][JAVA][恢复空格][动态规划][Trie][字符串哈希]_CryptWinter的博客-程序员秘密

【问题描述】[中等]【解答思路】1. 动态规划动态规划流程第 1 步:设计状态dp[i] 表示字符串的前 i 个字符的最少未匹配数。第 2 步:状态转移方程假设当前我们已经考虑完了前 i -1个字符了,对于前 i 个字符对应的最少未匹配数:第 i 个字符未匹配,则 dp[i] = dp[i+1] + 1,即不匹配数加 1;遍历前 i -1个字符,若以其中某一个下标 j 为开头、以第 i 个字符为结尾的字符串正好在词典里,则 dp[i] = min(dp[ i ], dp[ j ])

随便推点

AMPL_运输模型_千树V的博客-程序员秘密

今天来分享基于AMPL的运输模型是如何建模的。题目是这样的:有三个供应商,给四个客户提供产品,其中经过好几条线路,每条线路的成本都不一样,下面是相应数据:渔场 吨A1 80A2 60A3 60客户 需求D1 30D2 30D3 60D4 50线路 路线成本A1-B 100A2-B 130A3-B 120B-D1 500B-C1 100B-C2 140C1-D1 100C1-D2 120C1-D3 120C1-D4 150

iOS-Xcode Archive 不生成dsym文件的解决方法_MinggeQingchun的博客-程序员秘密

发布程序后,我们会通过crash log进行错误分析,我们需要用到dsym文件。Xcode Archive 不生成dsym文件的解决方法如下:选择Project -> Target -> Build Setting找到 Build Option ->  Debug Information Format 可以选择Release 下的选项为:DWARF with dSYM

2020-12-18第三次上机作业_Hakmun的博客-程序员秘密

题目 1、类的定义与基本操作#include <iostream>using namespace std;class Fraction { //数据成员,访问控制属性默认是私有 int m_Numerator = 0; // 分子默认为0; C++11 int m_Denominator = 1; //分母默认为1; public://公有成员函数 Fraction(int above = 0, int below = 1) :

Android中模拟器如何访问本地服务器_雷电模拟器访问本地域名_cjjky的博客-程序员秘密

       今天在项目中涉及到Android中的模拟器如何访问服务器。个人采用本地服务器来进行调试,部署在Tomcat服务器中。我们在Android模拟器当中如何才能访问到本地的服务器呢?有的童鞋可能会想:采用 localhost 或者 127.0.0.1 来访问。但这样访问是不成功的。     android模拟器(simulator)把它自己作为了localhost,也就是说,代码中使用

随笔一记-Linux操作系统、使用Hexo生成博客_Lufeidata的博客-程序员秘密

好久都没有写博客了,看着最近发布的一篇文章,都是一个月以前了…之所以不想写,也是给自己找的借口吧,看那些大佬们都有自己的博客,然后去自己也去捣鼓了半天,还是没给弄明白(想自己写个博客的主题,奈何还是没弄好)趁着周末,也就随笔写写吧。我是想把近一个月的学习笔记及其各种方法上传的,奈何这些知识内容是真的多,一时半会还没办法给发出来(我总不能今天直接发个二三十篇文章笔记吧)。等我自己的博客搭建好了,我会把所有的知识点上传上去,毕竟经营一个自己的博客网站才是最好的!今天就分享一下hexo和linux下的基操吧

表示学习(Representation Learning)_表示学习由哪篇论文最早提出_xunuo_nwpu的博客-程序员秘密

一、前言2013年,Bengio等人发表了关于表示学习的综述。最近拜读了一下,要读懂这篇论文还有很多文献需要阅读。组会上正好报了这篇,所以在此做一个总结。二、表示学习发展由来当我们学习一个复杂概念时,总想有一条捷径可以化繁为简。机器学习模型也不例外,如果有经过提炼的对于原始数据的更好表达,往往可以使得后续任务事倍功半。这也是表示学习的基本思路,即找到对于原始数据更好的表达,以方便后续任务(比...

推荐文章

热门文章

相关标签