zoukankan      html  css  js  c++  java
  • pandas基础1数据结构介绍

      1 # coding: utf-8
      2 # Series
      3 
      4 import pandas as pd
      5 from pandas import Series, DataFrame
      6 
      7 # Series 是一种一维的数组型对象,交互式环境中Series的字符串表示,索引在左边,值在右边。
      8 obj = pd.Series([4, 7, -5, 3])
      9 obj
     10 
     11 # 可以通过values属性和index属性获得Series对象的值好索引
     12 obj.values
     13 obj.index
     14 
     15 # 要创建一个索引序列,用标签标识每个数据点
     16 obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])
     17 obj2
     18 obj2.index
     19 
     20 # 与numoy数组相比,在选择数据时候使用标签进行索引
     21 obj2['a']
     22 obj2['d'] = 6
     23 obj2[['c', 'a', 'd']]
     24 
     25 # 使用numpy的的函数或numpy的风格操作,比如标量相乘等,这些操作保存索引值连接
     26 obj2[obj2 > 0]
     27 obj2 * 2
     28 
     29 import numpy as np
     30 np.exp(obj2)
     31 # Series 可以认为是一个长度固定且有序的字典,在使用字典的上下文中也可以使用Series.
     32 'b' in obj2
     33 'e' in obj2
     34 
     35 # 若已有数据包含在字典中,可以使用字典生成一根=个Series.
     36 sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
     37 obj3 = pd.Series(sdata)
     38 obj3
     39 
     40 # 当把字典传递给Series构造函数时,产生的Series的索引是排序好的字典键,可以将字典键按照你所想要的顺序传递给构造函数。
     41 states = ['California', 'Ohio', 'Oregon', 'Texas']
     42 obj4 = pd.Series(sdata, index=states)
     43 obj4
     44 
     45 # pandas 中使用isnull 和 notnull函数来检查缺失数据
     46 pd.isnull(obj4)
     47 pd.notnull(obj4)
     48 obj4.isnull()
     49 
     50 # Series对象自身和其索引都有name属性
     51 obj4.name = 'population'
     52 obj4.index.name = 'state'
     53 obj4
     54 
     55 #Series的索引可以按位置赋值的方式进行改变
     56 obj.index = ['Bob', 'Steve', 'Jeff', 'Ryan']
     57 obj
     58 
     59 ## DataFrame
     60 # DataFrame 表示的是矩阵额数据表
     61 # 构建DataFrame方式,最常用方式是利用包含等长度列表或numpy数组的字典来构建DataFrame
     62 data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
     63         'year': [2000, 2001, 2002, 2001, 2002, 2003],
     64         'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
     65 frame = pd.DataFrame(data)
     66 frame
     67 
     68 # 对于大型DataFrame ,head方法只选出头部的五行
     69 frame.head()
     70 
     71 # 如指定列的顺序,DataFrame将会按照指定顺序排列
     72 pd.DataFrame(data, columns=['year', 'state', 'pop'])
     73 
     74 # 若传的不包含在字典中,将会在结果中出现缺失值
     75 frame2 = pd.DataFrame(data, columns=['year','state','pop','debt'],
     76                          index=['one', 'two', 'three', 'four', 'five', 'six'])
     77 frame2
     78 
     79 # DtaFrame 中的一列,可以按字典型标记或属性那样检索为Series
     80 frame2['state']
     81 frame2.year
     82 
     83 # 行也可以通过位置或特殊属性loc进行选取
     84 frame2.loc['three']
     85 
     86 # 列的引用是可以修改的
     87 frame2['debt'] = 16.5
     88 frame2
     89 frame2['debt'] = np.arange(6.)
     90 frame2
     91 
     92 #将列表或数组赋值给一个列时, 值的长度必须匹配。若将Series赋值给一列时,
     93 #Series的索引会按照DataFrame的索引重新排列,并在空缺地方填充空缺值。
     94 val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
     95 frame2['debt'] = val
     96 frame2
     97 
     98 # del关键字对DataFrame删除列,可以用于移除之前新建的列
     99 frame2['eastern'] = frame2.state == 'Ohio'
    100 frame2
    101 
    102 del frame2['eastern']
    103 
    104 frame2.columns
    105 
    106 # 另一种常用的数据形式是包含字典的嵌套字典
    107 pop = {'Nevada': {2001: 2.4, 2002: 2.9},
    108           'Ohio': {2000: 1.5, 2001:1.7, 2002:3.6}}
    109 # 嵌套字典赋值给DatsFrame, pandas会将字典的键作为列, 将内部字典的键作为行索引
    110 frame3 = pd.DataFrame(pop)
    111 frame3
    112 
    113 # 进行转置操作
    114 frame3.T
    115 
    116 #如已经显式指明索引,内部字典的键将不会被排序
    117 pd.DataFrame(pop, index=[2001, 2002, 2003])
    118 
    119 # 包含Series的字典也可以用于构造DataFrame
    120 pdata = {'Ohio':frame3['Ohio'][:-1],
    121             'Nevada':frame3['Nevada'][:2]}
    122 pd.DataFrame(pdata)
    123 
    124 # DaataFrame的索引和列拥有name属性
    125 frame3.index.name = 'year';frame3.columns.name = 'state'
    126 frame3
    127 frame3.values
    128 
    129 # 若列时不同的dtypes,则values的dtype会自动选择合适所有列的类型
    130 frame2.values
    131 
    132 # 索引对象
    133 
    134 #pandas的索引对象用于存储轴标签和其他元数据,在构造Series和DataFrame时,所使用的任意数组和标签序列都可以在内部转换为索引对象
    135 obj = pd.Series(range(3), index=['a', 'b','c'])
    136 index = obj.index
    137 index
    138 
    139 # 索引对象是不可变的
    140 index[1:]

    参考书籍:利用 python 进行数据分析 (利用 jupyter notebook 运行代码)

    作者:舟华520

    出处:https://www.cnblogs.com/xfzh193/

    本文以学习,分享,研究交流为主,欢迎转载,请标明作者出处!

  • 相关阅读:
    P168 实战练习(权限修饰符)
    Java—面向对象—权限修饰符及思维导图
    P168 实战练习(构造方法)
    Java—面向对象—构造方法及相关思维导图
    面向对象编程(OOP)
    随堂练习——猜生日
    正则表达式
    P141 实战练习——字符串(修改后)
    java经典问题
    java开发环境
  • 原文地址:https://www.cnblogs.com/xfzh193/p/11407531.html
Copyright © 2011-2022 走看看