zoukankan      html  css  js  c++  java
  • Python数据分析与展示[第三周](pandas简介与数据创建)

    第三周的课程pandas 分析数据

    http://pandas.pydata.org

    import pandas as pd 

    常与numpy matplotlib 一块定义 

    d=pd.Series(range(20))

    d.cumsum()

    主要提供两个数据类型

    Series DataFrame 

    基于上述数据类型的各类操作 

    很好的表示和封装 

    numpy         更关注数据的结构表达 数据之间构成的维度 

    pandas        基于numpy 实现的扩展库 

    建立其应用与索引之间的关系 

     Series 数据和索引  series类型由一组数据与索引构成 

    a=pd.Series([9,8,7,6])

    会自动增加一个索引

    沿用numpy中的类型 

    更强大的索引能力 

    b=pd.Series=([9,8,7,6],index=['a','b','c','d'])

    b

    自定义索引的写法 ↑

    对于其每一个数据都会关联一个索引(自动生成或者自定义索引)

    Series 可以由 python列表 标量值其它函数 python字典 numpy ndarray  

    这里是Series 的创建 

    1 标量创建

    s=pd.Series(25,index=['a','b','c'])

    这里的index=不可省略 

    2 字典创建

    d=pf.Series({"a":9,"b":8,"c":7})

    这样的话 key -> index 

                value ->value 

    e=pd.Series({'a':9,'b':8,'c':7},index=['c','b','a'])

    这里的index制定了形状

    c 7.0

    a 9.0

    b.8.0

    d Nan

    以上的字典构造Series 的两种方式 

    3 ndarray中创建 

    n=pd.Series(np.arrange(5))

    m=pd.Series(np.arrange(5),index=np.arrange(9,4,-1))

    Series 的基本操作 

    import pandas as pd

    b=pd.Series([9,8,7,6],['a','b','c','d'])

    b.index 

    b.values

    获得index 和 values 

    Series = index + ndarray  

    b[1]

    8

    b['b']

    8

    两套索引可以并存,但是不能混用

    可以用自定义索引的列表进行切片 

    可以通过自动索引进行切片

    b[3] 第3个

    b[:3]  0-3个

    Series 类型切出来还是Series 类型

    b[b>b.median()]  所有大于元素中位数的项

    输出Series类型 

    是Series 就有index 和 values 

    对Series的运算都是返回Series

    类似字典类型 

    可以通过自动索引进行切片,而且索引和值会被一同切片

    保留字 in

    'c' in b   判断c是不是b的索引的一部分(只判断自定义索引,不会判断自动索引)

    True

    方法 .get()

    b.get('f',100) 得到 ‘f’对应的值,没有就返回100(默认)

    Series 的对齐操作

    a=pd.Series([1,2,3,],['c','d','e'])

    b=pd.Series([9,8,7,6],['a','b','c','d'])

    a+b

    索引相同的元素相加,索引不同的项不管

    有数据+没有值=没有值

    这是一个对齐问题(更加精确,更加不容易出错)

    对象和索引都可以有一个书名,存储在.name 

    b.name    对象的名字

    b.index.name 索引的名字

    Series类型的修改

    随时修改并且即刻生效

    b['b','c']=20  修改索引为'b','c'的元素 

    基本操作之间存在对齐问题 , 根据索引对齐 

    带标签数组的含义就是

    DataFrame 类型 

    是由公用相同索引的一组列组成 

    indexcolumn axis=1

    index_0  data_a ... 

    index_1  data_b ...

        ...

    axis=0

    表格型的数据类型 

    常用二维数据 

    DataFrame的创建 

    二维nd.array对象

    由一维ndarray ,列表,字典,元组,Series 构成的字典

    Series 类型 

    其他的Dataframe创建 

    import pandas as pd 

    import numpy as np

    d=pd.DataFrame(np.arrange(10).reshape(2,5))

    d

      0 1 2 3 4 

    0    0 1 2 3 4 

    1    5 6 7 8 9 

    使用字典创建 DataFrame

    dt={"one":pd.Series([1,2,3],index=['a','b','c']) ,

           "two":pd.Series([9,8,7,6],index=['a','b','c','d'])

    }

    每一个字典键值对,对应一个column

    d=pd.DataFrame(dt)

    d

      one two

    a    1   9

    b    2   8

    c    3   7

    d   nan 6 

    有一点点像自动对齐

    pd.DataFrame(dt,index=['b','c','d'],column=['two','three'])

    这里也同样是指定形状

    有一点像自动对齐的规则

      two three

    b    8    nan 

    c    7    nan

    d    6    nan 

    还可以通过列表类型的字典创建 

    dl={'one':[1,2,3,4],'two':[9,8,7,6]}

    key:List 分别对应两个column ,columnvalues

    d=pd.DataFrame(dl,index=['a','b','c','d'])    只指定index

    用字典的话column顺序 不一定与字典中相同

    d.columns 

    d.index    

    返回Series  (index)

    d.values 

    返回ndarray

    D['同比']获得其中某一列(column)  Series 

    d.ix[] 获得其中的某一行(row)         Series 

    d["同比"][“c2”]  先列(column)后行  奇怪。。(看上面的取值方法)

    d.ix['c2'][同比]  这样就先行(row)后列了吧(column)

    二维带标签的数组 

     

  • 相关阅读:
    在linux上使用Android systrace
    perf性能调优
    未初始化内存检测(MSan)
    数据竞争检查工具(TSan)
    应用层内存溢出/越界/重复释放等问题检查工具(ASan)
    gperf heap profiler
    cmake打印shell
    github clone加速
    获取一个进程的所有物理地址上的内存
    Jenkins <1>: System Management
  • 原文地址:https://www.cnblogs.com/sfzyk/p/6797082.html
Copyright © 2011-2022 走看看