数据结构之--series,DataFrame.use python and pandas for data mining
1.好的数据结构是数据分析的基础,一个高效的数据分析方法离不开数据的构造,series and DataFrame是两种高效简单的数据类型。
2.Series是一个一维的类似的数组对象,包含一个数组的数据(任何NumPy的数据类型)和一个与数组关联的数据标签,被成为索引(index),索引显示在左边,值显示在右边,其中索引在不指定的情况下从0到N-1之间自动产生,N是指数据的长度。
l1 = Series([1,3,4,2])
print l1
print type(l1)
OUT
0 1
1 3
2 4
3 2
dtype: int64
<class 'pandas.core.series.Series'>
IN
l1 = Series([1,3,4,2])
print l1.values
print l1.index
OUT
[1 3 4 2]
Int64Index([0, 1, 2, 3], dtype='int64')
自定义索引
IN
l1 = Series([1,3,4,2],index=['d','g','k','b'])
print l1.values
print l1.index
OUT
[1 3 4 2]
Index([u'd', u'g', u'k', u'b'], dtype='object')
一个值或是多个值的选择
IN:
l1 = Series([1,3,4,2],index=['d','g','k','b'])
# print l1.values
# print l1.index
print l1['d']
print l1[['g','k','b']]
OUT
1
g 3
k 4
b 2
dtype: int64
2.1 说了上面那么多,那么相比于numpy,这种数据究竟有什么不一样的优势呢?——它能在数据计算后保持数据的关联性。
IN
l1 = Series([1,3,4,2],index=['d','g','k','b'])
print l1[l1>2]
print "*****************"
print l1*2
print "*****************"
print np.exp(l1)
OUT
g 3
k 4
dtype: int64
*****************
d 2
g 6
k 8
b 4
dtype: int64
*****************
d 2.718282
g 20.085537
k 54.598150
b 7.389056
dtype: float64
从上面看起来,Series是种有序定长的字典
那么python中的字典能不能直接转化为Series呢?of course!
l2 = {'w':1,'ww':2,'wwww':4,'www':3,'wwwwww':6}
print l2
l3 = Series(l2)
print l3
out
{'ww': 2, 'wwww': 4, 'www': 3, 'wwwwww': 6, 'w': 1}
w 1
ww 2
www 3
wwww 4
wwwwww 6
dtype: int64
in
l2 = {'w':1,'ww':2,'wwww':4,'www':3,'wwwwww':6}
new_index=['w','ww','wwwww','wwww','wwww']
l3 = Series(l2,index = new_index)
print l3
out
w 1
ww 2
wwwww NaN
wwww 4
wwww 4
dtype: float64
在这种数据结构中缺失的数据用的NAN表示,在pandas中用函数 isnull 和 notnull 来检测数据丢失。
l2 = {'w':1,'ww':2,'wwww':4,'www':3,'wwwwww':6}
new_index=['w','ww','wwwww','wwww','wwww']
l3 = Series(l2,index = new_index)
print l3
print "--------------------"
print pd.isnull(l3)
print pd.notnull(l3)
OUT
w 1
ww 2
wwwww NaN
wwww 4
wwww 4
dtype: float64
--------------------
w False
ww False
wwwww True
wwww False
wwww False
dtype: bool
w True
ww True
wwwww False
wwww True
wwww True
dtype: bool
这种数据结构可以自动对齐
l1 = Series([1,3,4,2],index=['w','g','k','b'])
l2 = {'w':1,'ww':2,'wwww':4,'www':3,'wwwwww':6}
new_index=['w','ww','wwwww','wwww','wwww']
l3 = Series(l2,index = new_index)
print l1,l3
print l1+l3
out
w 1
g 3
k 4
b 2
dtype: int64 w 1
ww 2
wwwww NaN
wwww 4
wwww 4
dtype: float64
b NaN
g NaN
k NaN
w 2
ww NaN
wwww NaN
wwww NaN
wwwww NaN
dtype: float64
series中值和索引的name属性
l1 = Series([1,3,4,2],index=['w','g','k','b'])
# l2 = {'w':1,'ww':2,'wwww':4,'www':3,'wwwwww':6}
# new_index=['w','ww','wwwww','wwww','wwww']
# l3 = Series(l2,index = new_index)
l1.name = 'nameOne'
l1.index.name = '1'
print l1
OUT
1
w 1
g 3
k 4
b 2
Name: nameOne, dtype: int64
到此关于series的基本用法阐述完毕,如有什么不清楚的可以在下面给我留言,欢迎大家交流。
3. DataFrame数据结构
DataFrame可以看成是一个表格,这个表格是一个经过排序的列表集,这个列表集有中可以有不同的数据类型,行和列的操作基本相等的,关于这种数据结构的理解,请看下面相关的示例
DataFrame的构建
l1 ={"one" :['a','aa','aaaa','aaa','aaaaaa'],
"two" :['b','bb','bbbb','bbb','bbbbbb'],
"three" :['w','ww','wwww','www','wwwwww']}
print l1
print "---------------------------"
l2 = DataFrame(l1)
print l2
out
{'three': ['w', 'ww', 'wwww', 'www', 'wwwwww'], 'two': ['b', 'bb', 'bbbb', 'bbb', 'bbbbbb'], 'one': ['a', 'aa', 'aaaa', 'aaa', 'aaaaaa']}
---------------------------one three two
0 a w b
1 aa ww bb
2 aaaa wwww bbbb
3 aaa www bbb
4 aaaaaa wwwwww bbbbbb
上面对列分配了索引,并且排序
如何按自己的顺序来排列数据
l1 ={"one" :['a','aa','aaaa','aaa','aaaaaa'],
"two" :['b','bb','bbbb','bbb','bbbbbb'],
"three" :['w','ww','wwww','www','wwwwww']}l2 = DataFrame(l1)
print l2
print "---------------------------"
l3 = DataFrame(l1, columns=['three', 'one', 'two'])
print l3
out
one three two
0 a w b
1 aa ww bb
2 aaaa wwww bbbb
3 aaa www bbb
4 aaaaaa wwwwww bbbbbb
---------------------------
three one two
0 w a b
1 ww aa bb
2 wwww aaaa bbbb
3 www aaa bbb
4 wwwwww aaaaaa bbbbbb
检索行、列
l1 ={"one" :['a','aa','aaaa','aaa','aaaaaa'],
"two" :['b','bb','bbbb','bbb','bbbbbb'],
"three" :['w','ww','wwww','www','wwwwww']}
l2 = DataFrame(l1)
print l2.ix[2]
print "---------------------------"
print l2["two"]
out
one aaaa
three wwww
two bbbb
Name: 2, dtype: object
---------------------------
0 b
1 bb
2 bbbb
3 bbb
4 bbbbbb
Name: two, dtype: object
行列数据都能通过赋值改变,可以通过series精确赋值。给不存在的列赋值会创建新的值。任何在series上的修改都会影响DataFrame.
如果一个DataFrame的 index 和 columns 有它们的 name ,也会被显示出来,
l1 ={"one" :['a','aa','aaaa','aaa','aaaaaa'],
"two" :['b','bb','bbbb','bbb','bbbbbb'],
"three" :['w','ww','wwww','www','wwwwww']}
l2 = DataFrame(l1)
l2.index.name = 'year'
l2.columns.name = 'state'
print l2
OUT
state one three two
year
0 a w b
1 aa ww bb
2 aaaa wwww bbbb
3 aaa www bbb
4 aaaaaa wwwwww bbbbbb
in
l1 ={"one" :['a','aa','aaaa','aaa','aaaaaa'],
"two" :['b','bb','bbbb','bbb','bbbbbb'],
"three" :['w','ww','wwww','www','wwwwww']}
l2 = DataFrame(l1)
l2.index.name = 'year'
l2.columns.name = 'state'print l2.values
out
[['a' 'w' 'b']['aa' 'ww' 'bb']['aaaa' 'wwww' 'bbbb']['aaa' 'www' 'bbb']['aaaaaa' 'wwwwww' 'bbbbbb']]
索引方法和属性
- append 链接额外的索引对象,产生一个新的索引
- diff 计算索引的差集
- intersection 计算交集
- union 计算并集
- isin 计算出一个布尔数组表示每一个值是否包含在所传递的集合里
- delete 计算删除位置i的元素的索引
- drop 计算删除所传递的值后的索引
- insert 计算在位置i插入元素后的索引
- is_monotonic 返回True,如果每一个元素都比它前面的元素大或相等
- is_unique 返回True,如果索引没有重复的值
- unique 计算索引的唯一值数组
4. series和DataFrame关键特性的使用
在Series上调用 reindex 重排数据,使得它符合新的索引,如果那个索引的值不存在就引入缺失数据值
ll1 = Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
ll2 = ll1.reindex(['a', 'b', 'c', 'd', 'e'])
print ll2
out
a -5.3
b 7.2
c 3.6
d 4.5
e NaN
dtype: float64
reindex 的 method(内插)选项,自己去研究,删除条目用.drop()
过滤
- obj.ix[val] 从DataFrame的行集选择单行
- obj.ix[:, val] 从列集选择单列
- obj.ix[val1, val2] 选择行和列
- reindex 方法 转换一个或多个轴到新的索引
- xs 方法 通过标签选择单行或单列到一个Series
- icol, irow 方法 通过整数位置,分别的选择单行或单列到一个Series
- get_value, set_value 方法 通过行和列标选择一个单值
reference:
- http://pda.readthedocs.org/en/latest/chp5.html
数据结构之--series,DataFrame.use python and pandas for data mining相关推荐
- pandas数据结构:Series/DataFrame;python函数:range/arange
1. Series Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index). 1.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会 ...
- python中的series的结构_pandas 数据结构之Series的使用方法
1. Series Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index). 1.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会 ...
- Python之pandas:对pandas中dataframe数据中的索引输出、修改、重命名等详细攻略
Python之pandas:对pandas中dataframe数据中的索引输出.修改.重命名等详细攻略 目录 对pandas中dataframe数据中的索引输出.修改.重命名等详细攻略 知识点学习 输 ...
- python:Pandas的数据结构:Series,DataFrame
本篇文章主要讲一讲python的pandas库的一些使用(也算自己学习当中的整理): 数据分析的搭配环境,大家可以去参照安装下载好:https://blog.csdn.net/m0_53088614/ ...
- python使用pandas模块介绍以及使用,dataframe结构,Series结构,基本数据操作,DataFrame运算,pandas画图,存储,缺失值处理,离散化,合并
目录 1 pandas介绍 1.1 Pandas介绍 1.2 为什么使用Pandas 1.3 案例:在numpy当中创建的股票涨跌幅数据形式 1.4 DataFrame 1.4.1 DataFrame ...
- 【DS with Python】 Pandas中Series DataFrame的结构、创建、查询、修改语法与实例
文章目录 前言 一.Series结构与应用 1.1 Series的构造 1.2 创建Series 1.2.1 可用于创建Series的类型 1.2.2 三种设置index的方法 1.2.3 Serie ...
- Pandas数据结构:Series定义和创建
文章目录 Series 定义 创建 Pandas中重要的两个数据结构:Series和DataFrame.数据分析必学的两种数据结构,这两种数据结构以Numpy的Ndarray为基础,在Ndarray的 ...
- dataframe两个表合并_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)...
一.为什么学习pandas numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类 ...
- Python之Pandas:pandas.DataFrame.to_csv函数的简介、具体案例、使用方法详细攻略
Python之Pandas:pandas.DataFrame.to_csv函数的简介.具体案例.使用方法详细攻略 目录 pandas.DataFrame.to_csv函数的简介 pandas.to_c ...
- Python之pandas,series,可视化
七月在线之python数据处理 python常用导入函数 ndarray np之常用函数创建 ndarray之聚合操作 pandas pandas之series Series的创建 Series的索引 ...
最新文章
- C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用...
- linux 无锁队列覆盖问题,无锁队列杂谈
- 12.2 全局CSS样式
- C#调用vbs脚本实现Windows版Siri
- 文献记录(part8)--A biclustering approach for classification with mislabeled data
- AndroidStudio_安卓原生开发_精美自定义多选控件_多选Spinner_MultiSpinner_拿来即用---Android原生开发工作笔记144
- Python爬取北京市所有电子眼名,再也不怕被隐藏摄像头偷拍
- codeblocks下载安装与解决codeblocks找不到编译器的方法
- Egret引擎基础教程I(下载安装创建第一个项目)
- 使用JS实现对页面的繁体简体翻译转换
- 没有学历,四步进Google
- oracle dbms_metadata,DBMS_METADATA报错解决方法
- 超级鹰模拟登录古诗文网站
- 当初我要是这么学操作系统就好了(附思维导图)
- 数论数学:所有自然数之和为-1/12的证明
- C语言指针知识点小结
- 【Pandas】解析resample函数中重采样频率‘freq‘用法(附参数说明表)
- Android系统架构与分层
- Spring Boot 使用AES前后端传递参数加解密
- PHP的move_uploaded_file()出错解决
热门文章
- Fragment中获取Activity的Context
- 【职场攻略】比你的工资更重要的十件事
- keras中使用ImageDataGenerator对MINST数据集数据增强
- es搜索引擎_分布式搜索引擎的架构是怎么设计的?
- 济安横断面为什么会有水印_PS差值模式是如何去水印的?你看的懂抖音的沙雕做法?...
- bui框架与php结合,bui框架前端自定义配色基础属性
- python递归实例_Python函数递归(带实例演示)
- 【HDU6194】string string string(统计出现k次的子串数目---后缀数组+st表)
- STM32——库函数版——12864点阵显示屏驱动
- wordpress 修改上传文件大小限制