美文网首页
Python学习笔记 pandas

Python学习笔记 pandas

作者: 云师兄 | 来源:发表于2020-01-12 19:15 被阅读0次

1. 引子

周末在家没事做,翻墙逛Medium(国外版简书)的时候,看到有篇文章介绍Python能做什么 ,该文的内容以前在知乎上也看到有人翻译过,感兴趣的可以在知乎上搜一下。另外,作者文中还介绍它录的Python视频,链接为:https://youtu.be/a9UrKTVEeZA。视频内容主要是关于Anaconda3Jupyter NoteBook等python数据可视化环境的搭建。照着视频搭建好环境后,正好看会《利用Python进行数据分析》一书学习一番。

1. 数据结构

在使用pandas之前,先熟悉一下它的两个主要数据结构:Series和DataFrame。

1.1 Series

首先引入pandas和Series

import pandas as pd
from pandas import Series

Series是一种类似于一维数组的对象,它由一组数据和对应的索引组成,示例如下:

obj = Series([4,7,-5,3]) // 定义一个obj对象

如果输出obj对象,打印如下:

Out[4]:
0    4
1    7
2   -5
3    3

左边打印出索引,右边是数值。

1.1.1 values和index属性

另外还可以通过Series的values和index属性获取其数组表示形式和索引对象。

输入:

obj.values

输出:

array([ 4,  7, -5,  3], dtype=int64)

输入:

obj.index

输出:

RangeIndex(start=0, stop=4, step=1)

1.1.2 指定索引

  • 如果不想使用默认从0开始递增的索引,而是用其他索引,如a,b,c,d之类的。

    输入:

    obj2= Series([4,7,-5,3],index=['d','b','a','c'])
    

    obj2输出如下:

    d    4
    b    7
    a   -5
    c    3
    
  • 指定了索引后,就可以通过索引获取指定的元素。

    如输入:

    obj2['a']
    

    输出-5。

  • Series对象还支持和Numpy一样的数组运算。

    输入:

    obj2 *2
    

    输出:

    d     8
    b    14
    a   -10
    c     6
    
  • 还可以将Series看成是一个定长的有序词典。

    判断b是否是Series中的一个索引:

    'b' in obj2
    

    输出:True

也可以通过通过字典来创建Series。

输入:

data = {'a':1,'b':2,'c':3}
obj3 = Series(data)

输出obj3为:

a    1
b    2
c    3
  • 还可以同时指定字典和索引来创建Series

    输入:

    data = {'a':1,'b':2,'c':3}
    states = ['b','c','d','a']
    obj4 = Series(data,index=states)
    

    这里注意新指定的索引顺序和字典中指定的索引顺序不同,最终结果以index属性中指定的索引顺序为准,输出obj4如下:

    b    2.0
    c    3.0
    d    NaN
    a    1.0
    

    这里看到,由于索引d本身并不存在于字典中,所以这里对应值为NaN

    pandas中的isnullnotnull函数可用于检测缺失数据。

    如输入:

    pd.isnull(obj4)
    

    输出:

    b    False
    c    False
    d     True
    a    False
    
  • Series自动对齐

    Series索引提供了相同索引的自动对齐功能。

    如输入:

    obj5= Series([4,7,-5,3],index=['d','b','a','c'])
    obj6= Series([2,3,1,2],index=['d','b','a','c'])
    obj7 = obj5 + obj6
    

    最终输出obj7会将相同索引的元素相加得到新的数组:

    d     6
    b    10
    a    -4
    c     5
    
  • Series对象和索引的name属性

    设置Series对象和索引的name属性:

    obj7.name='population'
    obj7.index.name='state'
    

    输出obj7

    state
    d     6
    b    10
    a    -4
    c     5
    Name: population, dtype: int64
    

1.2 DataFrame

前面说Series是一种类似于一维数组的对象,那么DataFrame则是类似于二维数组的对象。

相关文章

网友评论

      本文标题:Python学习笔记 pandas

      本文链接:https://www.haomeiwen.com/subject/lkrwactx.html