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


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


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

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

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

        以上就是全部五个问题的答案了,通过自问自答这五个问题,我们就可以高效地学习某种数据结构了。
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值