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:

  1. http://pda.readthedocs.org/en/latest/chp5.html

数据结构之--series,DataFrame.use python and pandas for data mining相关推荐

  1. pandas数据结构:Series/DataFrame;python函数:range/arange

    1. Series Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index). 1.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会 ...

  2. python中的series的结构_pandas 数据结构之Series的使用方法

    1. Series Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index). 1.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会 ...

  3. Python之pandas:对pandas中dataframe数据中的索引输出、修改、重命名等详细攻略

    Python之pandas:对pandas中dataframe数据中的索引输出.修改.重命名等详细攻略 目录 对pandas中dataframe数据中的索引输出.修改.重命名等详细攻略 知识点学习 输 ...

  4. python:Pandas的数据结构:Series,DataFrame

    本篇文章主要讲一讲python的pandas库的一些使用(也算自己学习当中的整理): 数据分析的搭配环境,大家可以去参照安装下载好:https://blog.csdn.net/m0_53088614/ ...

  5. python使用pandas模块介绍以及使用,dataframe结构,Series结构,基本数据操作,DataFrame运算,pandas画图,存储,缺失值处理,离散化,合并

    目录 1 pandas介绍 1.1 Pandas介绍 1.2 为什么使用Pandas 1.3 案例:在numpy当中创建的股票涨跌幅数据形式 1.4 DataFrame 1.4.1 DataFrame ...

  6. 【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 ...

  7. Pandas数据结构:Series定义和创建

    文章目录 Series 定义 创建 Pandas中重要的两个数据结构:Series和DataFrame.数据分析必学的两种数据结构,这两种数据结构以Numpy的Ndarray为基础,在Ndarray的 ...

  8. dataframe两个表合并_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)...

    一.为什么学习pandas numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类 ...

  9. Python之Pandas:pandas.DataFrame.to_csv函数的简介、具体案例、使用方法详细攻略

    Python之Pandas:pandas.DataFrame.to_csv函数的简介.具体案例.使用方法详细攻略 目录 pandas.DataFrame.to_csv函数的简介 pandas.to_c ...

  10. Python之pandas,series,可视化

    七月在线之python数据处理 python常用导入函数 ndarray np之常用函数创建 ndarray之聚合操作 pandas pandas之series Series的创建 Series的索引 ...

最新文章

  1. C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用...
  2. linux 无锁队列覆盖问题,无锁队列杂谈
  3. 12.2 全局CSS样式
  4. C#调用vbs脚本实现Windows版Siri
  5. 文献记录(part8)--A biclustering approach for classification with mislabeled data
  6. AndroidStudio_安卓原生开发_精美自定义多选控件_多选Spinner_MultiSpinner_拿来即用---Android原生开发工作笔记144
  7. Python爬取北京市所有电子眼名,再也不怕被隐藏摄像头偷拍
  8. codeblocks下载安装与解决codeblocks找不到编译器的方法
  9. Egret引擎基础教程I(下载安装创建第一个项目)
  10. 使用JS实现对页面的繁体简体翻译转换
  11. 没有学历,四步进Google
  12. oracle dbms_metadata,DBMS_METADATA报错解决方法
  13. 超级鹰模拟登录古诗文网站
  14. 当初我要是这么学操作系统就好了(附思维导图)
  15. 数论数学:所有自然数之和为-1/12的证明
  16. C语言指针知识点小结
  17. 【Pandas】解析resample函数中重采样频率‘freq‘用法(附参数说明表)
  18. Android系统架构与分层
  19. Spring Boot 使用AES前后端传递参数加解密
  20. PHP的move_uploaded_file()出错解决

热门文章

  1. Fragment中获取Activity的Context
  2. 【职场攻略】比你的工资更重要的十件事
  3. keras中使用ImageDataGenerator对MINST数据集数据增强
  4. es搜索引擎_分布式搜索引擎的架构是怎么设计的?
  5. 济安横断面为什么会有水印_PS差值模式是如何去水印的?你看的懂抖音的沙雕做法?...
  6. bui框架与php结合,bui框架前端自定义配色基础属性
  7. python递归实例_Python函数递归(带实例演示)
  8. 【HDU6194】string string string(统计出现k次的子串数目---后缀数组+st表)
  9. STM32——库函数版——12864点阵显示屏驱动
  10. wordpress 修改上传文件大小限制