如何高效地学习数据结构——Python篇

原文链接:http://www.datastudy.cc/to/43

我们来看看如何高效地学习一门语言的数据结构,今天我们先看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

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

时间: 2024-12-14 20:16:45

如何高效地学习数据结构——Python篇的相关文章

学习编程之Python篇(一)

第一次接触编程,你将面对两大难题: 1.  对所要使用的编程语言的语法和语义不甚了了. 2.  不知道如何通过编程来解决问题. 作为一名新手,你会尝试同时来解决这两个难题:一边熟悉编程语言的语法语义,一边考虑如何靠编程解决问题.这是一个循序渐进的过程,万事开头难,务必保持耐心,切勿操之过急. 学习编程其实没有什么捷径可走,最好的方法就是反复操练,聆听规则,讨论方法,都不如真正做点什么. 在掌握了一些编程语言的语法语义之后,接下来的难题就是怎样才能写出好的程序.那么,我们首先来看看什么是好的程序.

ZMAN的学习笔记之Python篇:函数可变长参数

ZMAN的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 这次来聊聊Python中函数的“可变长参数”,在实际中经常会用到哦~  一.什么是“可变长参数” “可变长参数”就是向一个函数传入不定个数的参数.比如我写一个函数:传入一个学生参加各科目考试的成绩,求平均分,如两个学生分别传入(92, 91, 88)和(88, 95),因为每个学生参加的考试个数不同,因此传入的参数个数也就不同了,遇到这种情况,我们在定义函数的时候,可以使用“可变长参数”. 二.在定义函数时使用“可变长参数

如何高效的学习python

如何高效的学习python 假设到目前为止你已经知道Python或有一些学习它的方法,但是如果你喜欢我发现的不用几个月的时间就能迅速掌握其要领的学习语言的方法,那么这篇文章是为你准备的. 要避免的学习错误,在你的编程生涯中有一个技能比其他更重要.它就是,高效学习的能力.如果你掌握了这个本领,必将前程似锦,而且受到他人的敬仰.如John Sonmez所说, 至少有5种我们犯的错误会影响高效学习.我完全同意他的看法. 它们是: 1.一本书从头看到底,一页不漏: 这样不好因为我们只会记住我们读过的一小

Python学习教程(Python学习路线+Python学习视频):Python数据结构

Python学习教程(Python学习路线+Python学习视频):Python数据结构   数据结构引言:   数据结构是组织数据的方式,以便能够更好的存储和获取数据.数据结构定义数据之间的关系和对这些数据的操作方式.数据结构屏蔽了数据存储和操作的细节,让程序员能更好的处理业务逻辑,同时拥有快速的数据存储和获取方式. 在这篇文章中,你将了解到多种数据结构以及这些数据结构在Python中实现的方式.    抽象数据类型和数据结构 数据结构是抽象数据类型(ADT)的实现,通常,是通过编程语言提供的

学习编程之Python篇(二)

学习编程与学习踢球.学习演奏并无差别,最佳方式就是不断练习,所以我们鼓励你敲些代码,看看会发生什么,如果这些代码头一次不起作用,没关系,再来,看看你能否把它们纠正过来. 首先是一个简单的快速入门程序,让我们通过了解这个程序的细节,来熟悉Python. 第一项任务:给定半径,计算一个圆的周长和面积. 程序分解: 1.  提示用户输入半径: 2.  应用数学公式,根据获得的半径,得出周长和面积: 3.  输出结果. 代码1.1 运行程序的最简单方法是在IDLE编辑器里打开它,然后选择Run->Run

ZMAN的学习笔记之Python篇:装饰器

年前工作事务比较繁琐,我只能用零碎的时间继续学习Python,决定开一个系列的博文,作为自己深入学习Python的记录吧.名字也取好了,就叫<ZMAN的学习笔记之Python篇>~开篇是关于装饰器的,春节假期码的字哈哈~就让我们开始吧! 本文的例子都是自己想的,如果不是很合适,请大家提出宝贵意见哈~谢谢啦! 一.为什么要用“装饰器” 比如我们写了如下一段代码: # 打印0~99 def func(): for i in range(100): print(i) 我们想要监测执行这个函数花费了多

Python学习笔记基础篇——总览

Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列表.字典.主文件判断.对象 Python学习笔记——基础篇1[第三周]——set集合 Python学习笔记——基础篇2[第三周]——计数器.有序字典.元组.单(双)向队列.深浅拷贝.函数.装饰器 Python学习笔记——基础篇[第四周]——迭代器&生成器.装饰器.递归.算法.正则表达式 Python

Python学习笔记进阶篇——总览

Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(Socket编程进阶&多线程.多进程) Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(异常处理) Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(多线程与进程池) Python学习笔记——进阶篇[第九周]———线程.进程.协程篇(队列Queue和生产者消费者模型) Python学习笔记——进阶篇[第九周]———协程 Python学习笔记——进阶篇[第九周]———MYSQL操作

ZMAN的学习笔记之Python篇:命令行解析

ZMAN的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:ZMAN  (http://www.cnblogs.com/zmanone/) 在Python中,对命令行的解析方式不唯一,本文将介绍两种方法:一种是用sys.argv手动设置,另一种是用argparse模块. 一.sys.argv是什么 首先看一个例子: import sys print(len(sys.argv)) for arg in sys.argv: print(arg) 将