设为首页 收藏本站
查看: 1936|回复: 1

[经验分享] 如何高效地学习数据结构——Python篇

[复制链接]

尚未签到

发表于 2018-8-16 12:06:51 | 显示全部楼层 |阅读模式
  原文链接:http://www.datastudy.cc/to/43
  我们来看看如何高效地学习一门语言的数据结构,今天我们先看Python篇。
  所谓数据结构,是指相互之间存在一种或多种特定关系的数据类型的集合。
DSC0000.jpg

  Python在数据分析领域中,最常用的数据结构,莫过于DataFrame了,今天我们就介绍如何高效地学习DataFrame这种数据结构。
  要学习好一种东西,最好给自己找一个目标,达到了这个目标,我们就是学好了。一般,我在学习一门新的语言的数据结构的时候,一般要求自己达到以下五个要求:
  第一个问题:概念,这种数据结构的概念是什么呢?
  第二个问题:定义,如何定义这种数据结构呢?
  第三个问题:限制,使用这种数据结构,有什么限制呢?
  第四个问题:访问,访问这种数据结构内的数据的方式是什么呢?
  第五个问题:修改,如何对这种数据结构进行增加元素、删除元素以及修改元素呢?
  好,今天我们就来回答一下以上五个问题。
  第一个问题:概念,这种数据结构的概念是什么呢?
  数据框是用于存储多行和多列的数据集合,下面我们使用一张图片,形象地讲解它的内部结构:
DSC0001.jpg

DSC0002.jpg

  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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-552650-1-1.html 上篇帖子: 关于python本身的内存管理 下篇帖子: 解决:centos安装python-mysql出错
累计签到:110 天
连续签到:1 天
发表于 2018-12-31 09:32:11 | 显示全部楼层
谢谢分享哦,学习了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表