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/

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

posted on 2019-08-25 12:30  舟华  阅读(193)  评论(0编辑  收藏  举报

导航