Pandas之数据结构
pandas入门
由于最近公司要求做数据分析,pandas每天必用,只能先跳过numpy的学习,先学习大Pandas库
Pandas是基于Numpy构建的,让以Numpy为中心的应用变得更加简单
pandas的数据结构介绍
Series
- 由一组数据以及一组数据标签即索引组成
import pandas as pd
from pandas import Series,DataFrame obj = Series([4,7,-5,3])
# 索引在左边,值在右边,默认从0开始
obj
0 4
1 7
2 -5
3 3
dtype: int64 # 制定索引
obj2 = Series([4,7,-5,3],index = ['a','b','c','d'])
obj2
a 4
b 7
c -5
d 3
dtype: int64
# 查看索引
obj2.index
Index(['a', 'b', 'c', 'd'], dtype='object') # 查询
obj2[['a','b','c']]
a 4
b 7
c -5
dtype: int64 obj2[obj2>0]
a 4
b 7
d 3
dtype: int64
- 还可以直接看成一个关系型字典
sdata = {'ke':35000,'text':70000,'orgen':16000}
obj3 = Series(sdata)
obj3 ke 35000
text 70000
orgen 16000
dtype: int64 keys = ['ke','text','orgen','xu']
obj4 = Series(sdata, index=keys)
obj4
ke 35000.0
text 70000.0
orgen 16000.0
xu NaN
dtype: float64
- 检测缺失值的重要两个函数 isnull和notnull
obj4[obj4.isnull()]
xu NaN
dtype: float64 obj4[obj4.notnull()]
ke 35000.0
text 70000.0
orgen 16000.0
dtype: float64
- Series本身和索引都有一个name属性
# 可以理解成对象名称
obj4.name = 'pop'
# 对象的索引的名称
obj4.index.name = 'state'
obj4 state
ke 35000.0
text 70000.0
orgen 16000.0
xu NaN
Name: pop, dtype: float64 # Series的索引可以就地修改
obj4.index = ['new_ke','new_text','new_orgen','new_xu']
new_ke 35000.0
new_text 70000.0
new_orgen 16000.0
new_xu NaN
Name: pop, dtype: float64
DataFrame
- DataFrame是一个表格型数据结构,最常用的是直接传入一个由等长列表或者是Numpy数组组成的字典
data = {'state':['oh','oh','vad','vad'],
'yead':[2000,2001,2002,2003],
'pop':[1.5,1.7,3.6,2.4]
} frame = DataFrame(data)
# 自动有序排列
yead state pop
0 2000 oh 1.5
1 2001 oh 1.7
2 2002 vad 3.6
3 2003 vad 2.4 # 如果传入的列在数据中找不到,就产生NaN
DataFrame(data,columns=['yar','yead'])
yar yead
0 NaN 2000
1 NaN 2001
2 NaN 2002
3 NaN 2003
通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series
data = {'state':['oh','oh','vad','vad'],
'years':[2000,2001,2002,2003],
'pop':[1.5,1.7,3.6,2.4]
}
frame2 = pd.DataFrame(data,columns=['years','state','pop'])
# 原地修改索引
frame2.index=['one','two','three','four']
frame2
years state pop
one 2000 oh 1.5
two 2001 oh 1.7
three 2002 vad 3.6
four 2003 vad 2.4
frame2.columns
Index(['years', 'state', 'pop'], dtype='object')
# 通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series
# 字典操作
series_=frame2['state']
series_
one oh
two oh
three vad
four vad
Name: state, dtype: object
# 对象操作
frame2.years
one 2000
two 2001
three 2002
four 2003
Name: years, dtype: int64
# 查看具体一行的数据
frame2.ix['three']
years 2002
state vad
pop 3.6
Name: three, dtype: object
# 修改具体一列的数
frame2['new_raw']=16.5
frame2
years state pop new_raw
one 2000 oh 1.5 16.5
two 2001 oh 1.7 16.5
three 2002 vad 3.6 16.5
four 2003 vad 2.4 16.5
将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配,否则自动填充空值
from pandas import Series
val = Series([-1.2,-1.5,-1.7], index=['two','four','five'])
frame2['new_raw'] = val
frame2
years state pop new_raw
one 2000 oh 1.5 NaN
two 2001 oh 1.7 -1.2
three 2002 vad 3.6 NaN
four 2003 vad 2.4 -1.5
删除列
# 为不存在的列赋值
frame2['eastern'] = frame2.state == 'oooo'
frame2
years state pop new_raw eastern
one 2000 oh 1.5 NaN False
two 2001 oh 1.7 -1.2 False
three 2002 vad 3.6 NaN False
four 2003 vad 2.4 -1.5 False
del frame2['eastern']
frame2.columns
Index(['years', 'state', 'pop', 'new_raw'], dtype='object')
警告:通过索引方式返回的列只是相应数据的视图而已,并不是副本,对返回的Series所做的任何就地修改都会反映到源数据上,可以通过Series的copy方法显示的复制列
嵌套字典 外层字典的键作为列,内层键作为行索引
pop = {'Nevada':{2001:2.4,2002:2.9},
'Ohio':{2000:1.5,2001:1.7,2002:3.6}
}
frame3=pd.DataFrame(pop)
frame3
Nevada Ohio
2000 NaN 1.5
2001 2.4 1.7
2002 2.9 3.6
转置
frame3.T
2000 2001 2002
Nevada NaN 2.4 2.9
Ohio 1.5 1.7 3.6
# 内层字典的键会被合并、排序以形成最终的索引,如果显示指定了索引,就不会这样
frame3.reindex(index=[2001,2002,2000])
Nevada Ohio
2001 2.4 1.7
2002 2.9 3.6
2000 NaN 1.5
DataFrame构造函数所能接受的各种数据
类型 | 说明 |
---|---|
二维ndarry | 数据矩阵 |
由数组、列表或元组组成的字典 | 每个序列变成DataFrame的一列。所有序列的长度必须相同 |
Numpy结构化/记录数组 | 类似于由数组组成的字典 |
由Series组成的子典 | 每个Series会成为一列 |
由字典组成的字典 | 各内层字典会成为一列 |
字典或Series的列表 | 各项将会成为DataFrame的一行。 |
由列表或元组组成的列表 | 类似于'二维ndarray' |
另一个DataFrame | 该DataFrame的索引将会被沿用,除非显示指定了其他索引 |
Numpy的maskedArray | 类似于'二维ndarray'的情况 |
如果设置了DataFrame的index和columns的name属性,则这些信息也会被显示出来
frame3.index.name='year'
frame3.columns.name = 'state'
frame3
state Nevada Ohio
year
2000 NaN 1.5
2001 2.4 1.7
2002 2.9 3.6
values属性返回一个二维ndarray的形式
frame3.values
array([[nan, 1.5],
[2.4, 1.7],
[2.9, 3.6]])
如果各列的数据类型不同,则会选用能兼容所有列的数据类型
frame2.values
array([[2000, 'oh', 1.5, nan],
[2001, 'oh', 1.7, -1.2],
[2002, 'vad', 3.6, nan],
[2003, 'vad', 2.4, -1.5]], dtype=object)
索引对象
pandas的索引对象负责管理轴标签和其他元数据比如轴名称等,构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index
obj = Series(range(3), index=['a','b','c'])
obj.index
Index(['a', 'b', 'c'], dtype='object')
obj.index[:1]
Index(['a'], dtype='object')
index对象是不可修改的,这样子才能index对象在多个数据结构之间安全共享
obj.index[0] = '5'
TypeError Traceback (most recent call last)
<ipython-input-24-61511960448d> in <module>()
----> 1 obj.index[0] = '5'
E:\anaconda3\lib\site-packages\pandas\core\indexes\base.py in __setitem__(self, key, value)
2063
2064 def __setitem__(self, key, value):
-> 2065 raise TypeError("Index does not support mutable operations")
2066
2067 def __getitem__(self, key):
TypeError: Index does not support mutable operations
index的继承
import numpy as np
index = pd.Index(np.arange(3))
index
Int64Index([0, 1, 2], dtype='int64')
obj2 = Series([1.5,-2.5,0], index = index)
obj2
0 1.5
1 -2.5
2 0.0
dtype: float64
obj2.index is index
True
pandas中主要的Index对象
类 | 说明 |
---|---|
Index | 将轴标签表示为一个由Python对象组成的Numpy数组 |
Int64Index | 针对整数的特殊Index |
MultiIndex | '层次化'索引对象,表示单个轴上的多次索引 |
DatetimeIndex | 存储纳秒级时间戳 |
PeriodIndex | 针对Period数据的特殊Index |
frame3
state Nevada Ohio
year
2000 NaN 1.5
2001 2.4 1.7
2002 2.9 3.6
2000 in frame3.index
True
'Ohio' in frame3.columns
True
每个索引都有一些方法和属性
方法 | 说明 |
---|---|
append | 连接另一个index对象,产生新的index |
diff | 计算差集,并得到一个index |
intersection | 计算交集 |
union | 计算并集 |
isin | 计算y一个指示值是否都包含在参数集合中的布尔型数组 |
delete | 删除索引i处的元素,并得到新的index |
drop | 将元素插入到索引i处,并得到新的index |
insert | 当各元素均大于等于前一个元素时,返回True |
is_monotonic | 当index没有重复值时,返回True |
is_unique | 当index没有重复值时,返回True |
unique | 计算index中唯一值的数组 |
Pandas之数据结构的更多相关文章
- Pandas 的数据结构
Pandas的数据结构 导入pandas: 三剑客 from pandas import Series,DataFrame import pandas as pd import numpy as np ...
- pandas的数据结构之series
Pandas的数据结构 1.Series Series是一种类似于一维数组的对象,由下面两个部分组成: index:相关的数据索引标签 values:一组数据(ndarray类型) series的创建 ...
- Pandas的使用(3)---Pandas的数据结构
Pandas的使用(3) Pandas的数据结构 1.Series 2.DataFrame
- pandas中数据结构-Series
pandas中数据结构-Series pandas简介 Pandas是一个开源的,BSD许可的Python库,为Python编程语言提供了高性能,易于使用的数据结构和数据分析工具.Python与Pan ...
- 02. Pandas 1|数据结构Series、Dataframe
1."一维数组"Series Pandas数据结构Series:基本概念及创建 s.index . s.values # Series 数据结构 # Series 是带有标签的一 ...
- Python数据分析Pandas库数据结构(一)
pandas数据结构 1.生成一维矩阵模拟数据 import pandas as pdimport numpy as nps = pd.Series([1,2,3,4,np.nan,9,9])s2 = ...
- pandas 的数据结构(Series, DataFrame)
Pandas 讲解 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标 ...
- pandas 的数据结构Series与DataFrame
pandas中有两个主要的数据结构:Series和DataFrame. [Series] Series是一个一维的类似的数组对象,它包含一个数组数据(任何numpy数据类型)和一个与数组关联的索引. ...
- pandas的数据结构
要使用pandas,需要熟悉它的两个主要的数据结构,Series和DataFrame. Series series是一种类似于以为数组的对象,它由一组数据(各种numpy的数据类型)以及一组与之相关的 ...
随机推荐
- wgrib读grib数据
该文章来自博客:http://windforestwing.blog.163.c ... 412007103084743804/如有错误 ,大家及时指出啊!ps:meteoinfo可以直接处理grib ...
- 33.scrapy采集网站表单数据
这几天一直都再用scrapy写网站数据采集的爬虫,这里我就选一个写过的爬虫来记录一下. 杭州造价网:http://183.129.219.195:8081/bs/hzzjb/web/list 这里出现 ...
- kettle实现简单的增量同步
下载 pdi-ce-7.0.0.0-25.zip 解压 安装jdk 1.7以上的版本 配置环境变量 下载并将mysql-connector-java-5.1.39.jar 拷贝到 \data-inte ...
- [Flex+JAVA]建立Flex+java项目,并实现基本功能
1新建JAVA WEB项目 新建后的web文件包截图 3添加Flex项目,右键,添加.更改项目类型,天剑Flex项目类型
- [ 记录 ] Vue 对象数组中一项数据改变,页面不更新
问题描述:将data中数据列表渲染到页面,循环生成 el-switch,点击页面中 el-switch 后数组中某项值改变,但是页面不更新 数据格式如下 export default{ data(){ ...
- ThinkPHP3.2项目模块结构
Demo --项目目录 Addons --插件目录 Application --应用模块目录 Admin --后台模块 Common --后台公共函数目录 function.php (可选) Conf ...
- 算法练习,链表二分最大n个
import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; public class Bin ...
- 高德地图 API 计算两个城市之间的距离
1. 目前在项目中,遇到一个需求不会做,就是要计算两个城市之间的距离,而这两个城市的输入是可变的,如果要使用数据库来先存储两地之间的距离,调用的时候再来调用,那么存数据的时候,要哭的,因为光是省级区域 ...
- JSP基本_JSPの構成要素、アクション、ディレクティブ
1.JSPの構成要素[コア要素] JSP文法のコアとなる要素で.サーブレットソースに変換される. ・宣言: <%! - %> (宣言で指定した変数は.Javaの「フィールド変数」になる.ス ...
- 【378】python any() and all()
Reference: [1] Python all() - Python Standard Library [2] Python any() - Python Standard Library all ...