精华内容
下载资源
问答
  • 我们来看看如何高效地学习一门语言的数据结构,今天我们先看Python篇。所谓数据结构,是指相互之间存在一种或多种特定关系的数据类型的集合。Python在数据分析领域中,最常用的数据结构,莫过于DataFrame了,今天...

    我们来看看如何高效地学习一门语言的数据结构,今天我们先看Python篇。

    所谓数据结构,是指相互之间存在一种或多种特定关系的数据类型的集合。

    Python在数据分析领域中,最常用的数据结构,莫过于DataFrame了,今天我们就介绍如何高效地学习DataFrame这种数据结构。

    要学习好一种东西,最好给自己找一个目标,达到了这个目标,我们就是学好了。一般,我在学习一门新的语言的数据结构的时候,一般要求自己达到以下五个要求:

    第一个问题:概念,这种数据结构的概念是什么呢?

    第二个问题:定义,如何定义这种数据结构呢?

    第三个问题:限制,使用这种数据结构,有什么限制呢?

    第四个问题:访问,访问这种数据结构内的数据的方式是什么呢?

    第五个问题:修改,如何对这种数据结构进行增加元素、删除元素以及修改元素呢?

    好,今天我们就来回答一下以上五个问题。

    第一个问题:概念,这种数据结构的概念是什么呢?

    数据框是用于存储多行和多列的数据集合,下面我们使用一张图片,形象地讲解它的内部结构:

    OK,这个就是数据框的概念了。

    第二个问题:定义,如何定义这种数据结构呢?

    DataFrame函数语法

    DataFrame(columnsMap)

    代码举例 :

    >>> df = DataFrame({

    'age': Series([21, 22, 23]),

    'name': Series(['KEN', 'John', 'JIMI'])

    });

    >>> df

    age name

    0 21 KEN

    1 22 John

    2 23 JIMI

    OK,这个就是定义数据框DataFrame的方法了。

    第三个问题:限制,使用这种数据结构,有什么限制呢?

    一般而言,限制是对于这种数据结构是否只能存储某种数据类型,在Python的数据框中,允许存放多种数据类型,基本上对于默认的数据类型,没有任何限制。

    第四个问题:访问,访问这种数据结构内的数据的方式是什么呢?

    访问位置方法备注访问列变量名[列名]访问对应列访问行变量名[n:m]访问n行到m-1行的数据访问行和列变量名.iloc[n1:n2, m1:m2]访问n1到n2-1列,m1到m2-1行的数据访问位置变量名.at[n, 列名]访问n行,列位置

    代码举例

    >>> df['age']

    0 21

    1 22

    2 23

    Name: age, dtype: int64

    >>> df[1:2]

    age name

    1 22 John

    >>> df.iloc[0:1, 0:2]

    age name

    0 21 KEN

    >>> df.at[0, 'name']

    'KEN'

    >>> df[['age', 'name']]

    age name

    0 21 KEN

    1 22 John

    2 23 JIMI

    >>>

    第五个问题:修改,如何对这种数据结构进行增加元素、删除元素以及修改元素呢?

    这个问题,我并没有在课程中跟大家讨论过,主要是为了避免大家觉得学习起来很难。

    也因此,这篇博文到了这里才是真正的干货,之前的那些都是课程中出现过的内容了,哈哈,

    修改包括:

    1、修改列名,行索引

    2、增加/删除/修改 行

    3、增加/删除/修改 列

    好,下面我们上代码:

    from pandas import Series;

    from pandas import DataFrame;

    df = DataFrame({

    'age': Series([21, 22, 23]),

    'name': Series(['KEN', 'John', 'JIMI'])

    });

    #1.1、修改列名

    >>> df.columns

    Index(['age', 'name'], dtype='object')

    >>> df.columns=['age2', 'name2']

    >>> df

    age2 name2

    0 21 KEN

    1 22 John

    2 23 JIMI

    #1.2、修改行名

    >>> df.index

    Int64Index([0, 1, 2], dtype='int64')

    >>> df.index = range(1,4)

    >>> df.index

    Int64Index([1, 2, 3], dtype='int64')

    #2.1、删除行

    >>> df.drop(1)

    age2 name2

    2 22 John

    3 23 JIMI

    >>> df

    age2 name2

    1 21 KEN

    2 22 John

    3 23 JIMI

    #注意,删除后的DataFrame需要一个变量来接收,并不会直接修改原来的DataFrame.

    >>> newdf = df.drop(1);

    >>> newdf

    age2 name2

    2 22 John

    3 23 JIMI

    #2.2、删除列

    >>> del newdf['age2']

    >>> newdf

    name2

    2 John

    3 JIMI

    #3.1、增加行

    >>> df.loc[len(df)+1] = [24, "KENKEN"];

    >>> df

    age2 name2

    1 21 KEN

    2 22 John

    3 23 JIMI

    4 24 KENKEN

    #3.2、增加列

    >>> df['newColumn'] = [2, 4, 6, 8];

    >>> df

    age2 name2 newColumn

    1 21 KEN 2

    2 22 John 4

    3 23 JIMI 6

    4 24 KENKEN 8

    以上就是全部五个问题的答案了,通过自问自答这五个问题,我们就可以高效地学习某种数据结构了。

    展开全文
  • 什么是数据结构和算法? 1、数据结构是指一组数据的存储结构 2、算法就是操作数据的方法 3、数据结构和算法是相辅相成的,数据结构是为算法服务的, 而算法要作用在特定的数据结构之上 学习的重点在什么地方 数据...

    什么是数据结构和算法?

    1、数据结构是指一组数据的存储结构
    2、算法就是操作数据的方法
    3、数据结构和算法是相辅相成的,数据结构是为算法服务的, 而算法要作用在特定的数据结构之上

    学习的重点在什么地方

    数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。在学习数据结构和算法的过程中,要学习它的「来历」、「自身的特点」、「适合解决的问题」以及「实际的应用场景」。
    在这里插入图片描述

    20个最常用的、最基础的数据结构与算法

    1、10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;
    2、10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算 法、动态规划、字符串匹配算法。

    一些可以让你事半功倍的学习技巧

    1、边学边练,适度刷题
    可以“适度”刷题,但一定不要浪费太多时间。我们学习的目的还是掌握,然 后应用。
    2、多问、多思考、多互动
    学习最好的方法是,找到几个人一起学习,一块儿切磋,有问题及时寻求老师答疑。
    3、打怪升级学习法
    学习的过程中,我们碰到最大的问题就是,坚持不下来。我们在枯燥的学习过程中,可以给自己设立一个切实可行的目标
    4、知识需要沉淀,不要想试图一下子掌握所有
    学习知识的过程是反复迭代、不断沉淀的过程。

    下期一起学习复杂度分析!

    展开全文
  • 如果你数据结构,或者了解java。你将会知道常见的数据结构有:数组(Array) 特点:1、一旦在内存中请求建立空间后,分配的空间大小不能调整,否则会出现数据溢出的情况。2、具有数据连续性的表现,中间的数据不能...

    这篇文章简单的说一下python的数据结构。我也是初学者有些地方可能不够深入。

    简介

    我们这里提到的数据结构为将数据以某种结构存储,便于我们的程序能够很好的处理。如果你学过数据结构,或者了解java。你将会知道常见的数据结构有:

    数组(Array)    特点:1、一旦在内存中请求建立空间后,分配的空间大小不能调整,否则会出现数据溢出的情况。2、具有数据连续性的表现,中间的数据不能随意删除修改。(需要下标来控制)3、程序在运行的时候不会检查数组下标,会存在数组越界的风险。

    注 数组:优点是插入快,如果知道下标,可以非常快地存取。缺点是查找慢,删除慢,大小固定。有序数组:优点是比无序的数据查找快。缺点是删除和插入慢,大小固定。

    堆栈 (Stack)   特点:1、只能允许在堆栈的一端进行推入,弹出操作的(线性的)。优点是提供后进先出方式的存取。缺点是存取其他项很慢。

    队列(queue)   特点:1、先进先出,只允许在后端进行插入操作,在前端进行删除操作。2、操作方式和堆栈类似,但是队列只允许在后端插入数据。提供先进先出方式的存取。缺点是存取其他项很慢。

    链表 (list)       特点:1、可以动态开辟空间。2、和数组相比不能随机读取,每一次读取数据都需要循环迭代,时间复杂度较高。优点是插入快,删除快。缺点是查找慢

    树    (tree)     特点:1、每个节点有0个或多给子节点。2、没有前驱的结点称为根结点。3、每一个非根结点有且只有一个父结点。除了根结点外,每个子结点可以分为m个不相交的子树。关于树延伸起来就很多,各种数据的查找,删除,操作。这里就不多说了

    图    (Graph) 特点:1、优点是对现实世界建模。缺点是有些算法且复杂

    堆    (heap)    特点:1、堆中某个节点的值总是不大于或不小于其父节点的值;2、堆总是一棵完全树 优点是插入、删除快,对最大数据项的存取很快。缺点是对其他数据项存取慢。

    散列表  (hash) 特点:1、是根据关键字(Key value)而直接进行访问的数据结构。优点是如果关键字已知则存取极快。插入快。缺点是删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分

    python的数据结构:

    1.列表

    上面说了一些常见的数据结构的一些特点,以及优缺点。接下来看看python中的数据结构。我们从数据的存储,以及输出来分析

    >>> shoplist = ["apple","mango","carrot","banana"]

    >>> print len(shoplist)

    4

    >>> for item in shoplist:

    print item,

    apple mango carrot banana

    >>> shoplist.sort()

    >>> print shoplist

    ['apple', 'banana', 'carrot', 'mango']

    >>> shoplist.append("rice")

    >>> print shoplist

    ['apple', 'banana', 'carrot', 'mango', 'rice']

    >>> del shoplist[0]

    >>> print shoplist

    ['banana', 'carrot', 'mango', 'rice']

    >>>

    在python中把第一行定义的这种数据结构叫做列表。一旦你创建了一个列表,你可以添加、删除或是搜索列表中的项目。由于你可以增加或删除项目,我们说列表是 可变的 数据类型,即这种类型是可以被改变的。(这里是不是很灵活,可以通过下标来访问,删除数据。并且可以增加数据。)

    可以通过命令help(list)来查看python对list实现了那些方法。

    2、元组

    >>> zoo = ("wolf","elephant","penguin")

    >>> print len(zoo)

    3

    >>> new_zoo = ("monkey","dolphin",zoo)

    >>> print new_zoo[2]

    ('wolf', 'elephant', 'penguin')

    >>> print new_zoo[2][2]

    penguin

    >>>

    变量zoo是一个元组,我们看到len函数可以用来获取元组的长度。这也表明元组也是一个序列。我们在new_zoo 中放置了zoo,但是zoo还是通过下标可以访问的。这说明元组在元组中是不会失去身份的。

    空的元组用 zoo=(),但是一个元素的元组应该用zoo=("animail",),需要在后面跟一个逗号。

    3、字典

    >>> ab ={ "swaroop" : "hello@swaroop.com",

    "larry" : "larry@larry.org",

    "matsumoto" : "matz@matsuoto.com",

    }

    >>> print ab["swaroop"]

    hello@swaroop.com

    >>>

    >>> del ab["swaroop"]

    >>> len(ab)

    2

    >>> for name,addressin ab.items():

    SyntaxError: invalid syntax

    >>> for name,address in ab.items() :

    print (name,address)

    ('matsumoto', 'matz@matsuoto.com')

    ('larry', 'larry@larry.org')

    >>>

    这种字典数据结构类似于json的数据格式,通过key/value键值对的方式来操作数据。你可以使用help(dict)来查看dict类的完整方法列表

    4、使用序列

    列表、元组和字符串都是序列,但是序列是什么,它们为什么如此特别呢?序列的两个主要特点是索引操作符和切片操作符。索引操作符让我们可以从序列中抓取一个特定项目。切片操作符让我们能够获取序列的一个切片,即一部分序

    >>> shoplist = ['apple', 'mango', 'carrot', 'banana']

    >>> print shoplist[1:3]

    ['mango', 'carrot']

    >>> print shoplist[1:-1]

    ['mango', 'carrot']

    >>> print shoplist[:]

    ['apple', 'mango', 'carrot', 'banana']

    >>>

    首先,我们来学习如何使用索引来取得序列中的单个项目。这也被称作是下标操作。每当你用方括号中的一个数来指定一个序列的时候,Python会为你抓取序列中对应位置的项目。记住,Python从0开始计数。因此,shoplist[0]抓取第一个项目,shoplist[3]抓取shoplist序列中的第四个元素。

    索引同样可以是负数,在那样的情况下,位置是从序列尾开始计算的。因此,shoplist[-1]表示序列的最后一个元素而shoplist[-2]抓取序列的倒数第二个项目。序列的神奇之处在于你可以用相同的方法访问元组、列表和字符串

    4、对象与参考

    当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 参考 那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定。

    >>> shoplist = ['apple', 'mango', 'carrot', 'banana']

    >>> mylist = shoplist

    >>> del shoplist[0]

    >>> print shoplist

    ['mango', 'carrot', 'banana']

    >>> print mylist

    ['mango', 'carrot', 'banana']

    >>> mylist = shoplist[:]

    >>> del mylist[0]

    >>> print shoplist

    ['mango', 'carrot', 'banana']

    >>> print mylist

    ['carrot', 'banana']

    你需要记住的只是如果你想要复制一个列表或者类似的序列或者其他复杂的对象(不是如整数那样的简单 对象 ),那么你必须使用切片操作符来取得拷贝。如果你只是想要使用另一个变量名,两个名称都 参考 同一个对象,那么如果你不小心的话,可能会引来各种麻烦。

    5、字符串的方法

    >>> name ="guopeng"

    >>> if name.startswith('guo') :

    print 'yes'

    yes

    >>> if 'u' in name :

    print 'yes'

    yes

    >>> if name.find('uop') != -1 :

    print 'yes'

    yes

    >>> delimiter = "*"

    >>> mylist = ["guo","pem","indei"]

    >>> print delimiter.join(mylist)

    guo_pem_indei

    >>>

    展开全文
  • 说实话,之前代码的时候很少考虑数据结构,一方面是因为写的主要是业务代码,另外一方面是因为很多编程语言都已经封装好了基本的数据结构,拿来即用,最多也就了解基本的一个数组和链表的特点以及效率问题,因为最近...

    1.先叨叨几句

    说实话,之前代码的时候很少考虑数据结构,一方面是因为写的主要是业务代码,另外一方面是因为很多编程语言都已经封装好了基本的数据结构,拿来即用,最多也就了解基本的一个数组和链表的特点以及效率问题,因为最近重新找工作,也趁着这段时间好好的了解了数据结构这一块,有了深入的了解后,感觉还确实不一样,因为只有了解后,才知道到每种数据结构特点及应用场景,甚至针对特殊场景进行结构优化,当然,一般编程也用不了自己去做这些,但是,我们需要熟悉和了解,只有这样,才能选择更合适的数据结构,累出更有效的业务代码!(。。。哭晕在测试),话不多说,开干!

    2.数据结构和算法简述

    在学习之前,先对数据结构大概做个了解,概念就不说了,主要说一下,学习数据结构都需要知道哪些点和基本的数据结构以及算法,为什么要把数据结构和算法放在一起呢,因为单独的数据结构是没意义的,需要算法的加持才能发挥其价值,比如二分查找的基础就是建立在数组结构之上的。一般情况下需要掌握的基础数据结构和算法如表。

    数据结构 数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树
    算法 递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态
    规划、字符串匹配算法

    3.学习建议

    在学习的过程中肯定是非常痛苦的,但是万事开头难,从简单开始,比如数组,链表,熟悉了之后然后慢慢的往深了走,坚持同样非常重要,学得快,忘得也快,所以在平时的工作和业余时间也要学会思考和应用,共勉。

     

    展开全文
  • 02怎么学数据结构

    2018-12-25 14:55:00
    数组,链表,栈,队列,散列表,二叉树,堆,跳表,图,Trie树(10个数据结构) 递归,排序,二分查找,搜索,哈希算法,贪心算法,分治算法,回溯算法,动态规划,字符串匹配算法(10个算法) 怎么学? ...
  • 概述在深入研究数据科学和模型构建之前,Python中的数据结构是一个需要学习的关键内容了解Python提供的不同数据结构,包括列表、元组等介绍数据结构听起来是一个非常直截了当的话题,但许多数据科学和分析的新手并不...
  • QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技aming 网络安全 ,深度学习,嵌入式,机器强化,生物...
  • 数据结构与算法对于一个程序员来说是至关重要的,一个好的程序员和不好的程序员之间的差距可能就是算法与数据结构掌握。本篇博文也是在学习王争老师的《数据结构与算法之美》课程之后所做的笔记,方便之后回顾。 一...
  • 最近在看数据结构,C语言大一学过了,大衣下学过数据结构的课程,但是比较水。基本的东西了解一些,觉得有点懂,但是用数据结构做的一些...我知道数据结构很高深的,也没太丧气,大家都是怎么学过来的,能分享一下吗?
  • 怎么学数据结构? 资源推荐 为什么要学数据结构? 首先要明确的一点就是数据结构不是具体的语言,主要是一种思维,很多同学私聊问的最多就是用什么语言学习数据结构。其实原则上什么语言都可以,当然这就引出了需要...
  • 如何用Python高效地学习数据结构
  • 数据结构与算法怎么学1.是什么2.学什么3.怎么学 1.是什么 数据结构指的是“一组数据的存储结构”,算法是指“操作数据的一组方法” 数据结构是为算法服务的,算法是作用在数据结构上的。 2.学什么 效率和资源消耗...
  • 于是就明白自己基础太薄弱,准备补充计算机科学基础知识。好友Yang推荐我读《大话数据结构》,对于我这种没有数据结构的“小白”而言,再合适不过。
  • 1、真的应该学习这个问题本身就不是个问题,所有人都在强调数据结构与算法比较重要,但是好像平时也没用到,无法直观的去感受它的重要性,于是把学习重心放在了常见的哪些框架身上,似乎只要熟悉了哪些框架的API,...
  • 数据结构怎么学

    2013-09-26 00:07:20
    我们这学期刚开始学数据结构,上了两次课,觉得老师讲的好抽象,很泛泛,根本不知道在讲什么,学长学姐们都说这课很重要,那课下要怎么学才能学到精通啊?
  • 1.2 你数据结构怎么学的... 他告诉我,在做我学生时,其实根本就没好好学数据结构,时常逃课,考试也是临时突击后勉强及格。毕业后,他几经求职,算是找到了一份程序员的工作。  工作中,有一次他们需要开发一个客
  • 数据结构怎么学

    2010-10-19 19:06:00
     可能是我不够认真不够努力的缘故吧,大二这学期的数据结构学起来很痛苦。  上学期的C++起来也很痛苦。
  • 先要声名一点,我目前没有考试的计划,只是想通过学习这门课程...以前在QQ群中,有人就反对过我学数据结构,那时我因为还处于迷茫阶段,不知学什么怎么学,大把的时间看了些算法,又把那些算法用delphi实现,那些程...
  • 一、引论学习数据结构和算法需要离散数学以及程序设计个一些概念作为支柱,我认为算法的设计更像是数学模型的搭建,我们需要在搭建过程中考虑运行性能和近乎所有会出现的状况。以下的笔记主要出自《数据结构与算法...
  • 文章目录算法与数据结构学习(一)1. 数据结构1.1 什么是数据结构1.2 学习数据结构的必要性2. 算法2.1 怎么衡量算法的好坏2.1.1 时间复杂度2.1.2 空间复杂度2.2 时间复杂度的计算2.3 常见的时间复杂度 算法与数据...
  • 学习数据数据结构的意义

    千次阅读 2018-12-31 14:09:05
    我们要怎么才能学好数据结构?… 相信同学们在刚开始《数据结构》这门课的学习时,心里有着类似前面几个问题的这样那样的疑问。希望下面的内容能帮助大家消除疑惑,下定决心坚持学好这门课: ...
  • 算法和数据结构的内容很多,就算是最基础的...前端到底怎么学数据结构和算法?数据结构和算法重要吗?我觉得程序=数据结构+算法至今都不过时。数据结构和算法这么多,我们没有必要全都学一遍。做一个全方面的了解,...
  • 学数据结构和算法(一)前言这个系列准备将数据结构和算法复习一遍,毕竟都知道在一些互联网大厂面试的时候会经常手撕算法,把自己的知识体系梳理一遍以便于平时查阅或是之后使用。而且对于一个开发来讲,只有对算法...
  • 数据结构学习时候最难的也是最重要的是算法的学习,很多同学不知道一些算法应该怎么学,也不知道应该掌握到什么程度,往往事倍功半。在此特写此篇文章,介绍一下程序设计题的算法怎么应对。学习方法推荐:第一步,...
  • 2、数据结构怎么起源的?3、数据结构中我们必须要掌握哪些概念和术语?3.1、 数据3.2、数据元素3.3、数据项3.4、数据对象4、数据结构到底有那些结构?4.1、逻辑结构4.1.1、集合结构4.1.2、线性结构4.1.3、树形结构...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,626
精华内容 1,850
关键字:

怎么学数据结构

数据结构 订阅