申明:本系列文章是自己在学习《利用Python进行数据分析》这本书的过程中,为了方便后期自己巩固知识而整理。

首先,需要导入pandas库的Series和DataFrame

In [21]: from pandas import Series,DataFrame

In [22]: import pandas as pd

Series

是一种类似一维数组的对象,是一组数据与索引的组合。如果没设置索引,默认会加上。

In [23]: obj = Series([4,3,5,7,8,1,2])

In [24]: obj
Out[24]:
0 4
1 3
2 5
3 7
4 8
5 1
6 2
dtype: int64

自定义索引

In [28]: obj = Series([4,3,2,1],index=['a','b','c','d'])

In [29]: obj
Out[29]:
a 4
b 3
c 2
d 1
dtype: int64

获取values和index的值

In [30]: obj.index
Out[30]: Index(['a', 'b', 'c', 'd'], dtype='object') In [31]: obj.values
Out[31]: array([4, 3, 2, 1], dtype=int64)

通过索引获取Series的元素值

In [32]: obj['c']
Out[32]: 2

还能当字典

In [33]: if 'a' in obj:
...: print("a在对象里!")
...:
a在对象里!

也能将字段转换成Series对象(有序)

In [56]: data = {'a':1,'b':2,'c':3,'d':4}

In [57]: obj = Series(data)

In [58]: obj
Out[58]:
a    1
b    2
c    3
d    4
dtype: int64

In [59]: data = {'a':1,'b':2,'d':3,'c':4}

In [60]: obj = Series(data)

In [61]: obj
Out[61]:
a    1
b    2
c    4
d    3
dtype: int64

字典data中,我加一个index会怎样?

In [72]: datas = {'a','b','d','c','e'}

In [73]: objs = Series(data,index=datas)

In [74]: objs
Out[74]:
c 4.0
e NaN
b 2.0
d 3.0
a 1.0
dtype: float64

isnull 检测缺失

In [75]: pd.isnull(objs)
Out[75]:
c False
e True
b False
d False
a False
dtype: bool

notnull 检测不缺失

In [76]: pd.notnull(objs)
Out[76]:
c True
e False
b True
d True
a True
dtype: bool

Series的检测缺失方法

In [78]: objs.isnull()
Out[78]:
c False
e True
b False
d False
a False
dtype: bool In [79]: objs.notnull()
Out[79]:
c True
e False
b True
d True
a True
dtype: bool

DataFrame

DataFrame 是表格型数据结构,含有一组有序的列。

In [86]: data = {'class':['语文','数学','英语'],'score':[120,130,140]}

In [87]: frame = DataFrame(data)

In [88]: frame
Out[88]:
class score
0 语文 120
1 数学 130
2 英语 140
In [95]: frame = DataFrame(data)

In [96]: frame
Out[96]:
class score
0 语文 120
1 数学 130
2 英语 140

按指定序列进行排序

In [98]: DataFrame(data,columns={'score','class'})
Out[98]:
score class
0 120 语文
1 130 数学
2 140 英语

NaN补充

In [99]: DataFrame(data,columns={'score','class','teacher'})
Out[99]:
score class teacher
0 120 语文 NaN
1 130 数学 NaN
2 140 英语 NaN

给NaN批量赋值

方法一:

In [107]: frame['teacher'] = '周老师'

In [108]: frame
Out[108]:
score class teacher
0 120 语文 周老师
1 130 数学 周老师
2 140 英语 周老师

方法二:

In [110]: frame.teacher = '应老师'

In [111]: frame
Out[111]:
score class teacher
0 120 语文 应老师
1 130 数学 应老师
2 140 英语 应老师

通过字典标记的方式,可以将DataFrame的列转成一个Series

In [112]: frame.teacher
Out[112]:
0 应老师
1 应老师
2 应老师
Name: teacher, dtype: object

将列表或数组赋值给Frame的某一列

In [114]: val = Series(['周老师','应老师','小周周'],index=[0,1,2])

In [115]: frame['teacher'] = val

In [116]: frame
Out[116]:
score class teacher
0 120 语文 周老师
1 130 数学 应老师
2 140 英语 小周周

为Frame创建一个新的列

In [125]: frame['yesorno'] =0

In [126]: frame
Out[126]:
score class teacher yesorno
0 False 语文 周老师 0
1 True 数学 应老师 0
2 False 英语 小周周 0

创建一个新列,并赋值一个布尔类型的Series

In [119]: frame['yesorno'] = frame.teacher == '应老师'

In [120]: frame
Out[120]:
score class teacher yesorno
0 False 语文 周老师 False
1 True 数学 应老师 True
2 False 英语 小周周 False

删除Frame的列

In [122]: del frame['yesorno']

In [123]: frame
Out[123]:
score class teacher
0 False 语文 周老师
1 True 数学 应老师
2 False 英语 小周周

嵌套字典

外层字典的键作为Frame的列,内层键作为行索引。

In [10]: from pandas import DataFrame,Series

In [11]: data = {'a':{'aa':2,'aaa':3},'b':{'bb':4,'bbb':5}}

In [12]: frame = DataFrame(data)

In [13]: frame
Out[13]:
a b
aa 2.0 NaN
aaa 3.0 NaN
bb NaN 4.0
bbb NaN 5.0

索引对象

pandas的索引index其实也是一个对象。由index类继承而衍生出来的还有Int64Index\MultiIndex\DatetimeIndex\PeriodIndex等。

In [31]: frame.index
Out[31]: Index(['aa', 'aaa', 'bb', 'bbb'], dtype='object')

index对象有以下属性(方法):

insert(i,str)属性的使用案例:

In [31]: frame.index
Out[31]: Index(['aa', 'aaa', 'bb', 'bbb'], dtype='object') In [32]: frame.index.insert(5,'fff')
Out[32]: Index(['aa', 'aaa', 'bb', 'bbb', 'fff'], dtype='object')

利用Python进行数据分析_Pandas_数据结构的更多相关文章

  1. 利用Python进行数据分析_Pandas_数据加载、存储与文件格式

    申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 1 pandas读取文件的解析函数 read_csv 读取带分隔符的数据,默认 ...

  2. 利用Python进行数据分析_Pandas_层次化索引

    申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 层次化索引主要解决低纬度形式处理高纬度数据的问题 import pandas ...

  3. 利用Python进行数据分析_Pandas_处理缺失数据

    申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 1 读取excel数据 import pandas as pd import ...

  4. 利用Python进行数据分析_Pandas_汇总和计算描述统计

    申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. In [1]: import numpy as np In [2]: impo ...

  5. 利用Python进行数据分析_Pandas_基本功能

    申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 第一 重新索引 Series的reindex方法 In [15]: obj = ...

  6. 利用Python进行数据分析_Pandas_数据清理、转换、合并、重塑

    1 合并数据集 pandas.merge pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, le ...

  7. 利用Python进行数据分析_Pandas_绘图和可视化_Matplotlib

    1 认识Figure和Subplot import matplotlib.pyplot as plt matplotlib的图像都位于Figure对象中 fg = plt.figure() 通过add ...

  8. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  9. 《利用python进行数据分析》读书笔记 --第一、二章 准备与例子

    http://www.cnblogs.com/batteryhp/p/4868348.html 第一章 准备工作 今天开始码这本书--<利用python进行数据分析>.R和python都得 ...

随机推荐

  1. [bzoj 4566][Haoi 2016]找相同字符

    传送门 Description 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两个子串中有一个位置不同. Solution 考虑用SAM,采用较为轻 ...

  2. Java基础系列 - try...catch...finally

    package com.test6; import java.io.FileReader; import java.io.IOException; /** * try...catch...finall ...

  3. Tkinter 之pack布局

    一参数说明 参数 作用 anchor 控制组件在 pack 分配的空间中的位置"n", "ne", "e", "se", ...

  4. ES6---修饰器

    类的修饰 许多面向对象的语言都有修饰器(Decorator)函数,用来修改类的行为.目前,有一个提案将这项功能,引入了 ECMAScript. @testable class MyTestableCl ...

  5. IdentityServer4入门三:授权模式

    在入门一.入门二我们实现了一个完整的API保护的过程.需要保护的API只需在其Controler上应用[Authorize]特性,来显式指定受保护的资源.而我们实现的这个例子,所应用的模式叫“Clie ...

  6. insomnihack CTF 2016-microwave

    目录 程序基本信息 程序漏洞 整体思路 exp脚本 内容参考 程序基本信息 程序防护全开,shellcode修改got表等方法都不太可行,同时pie开启也使程序代码随机化了. 程序漏洞 这是一个发推特 ...

  7. TynSerial序列(还原)TFDMemTable

    TynSerial序列(还原)TFDMemTable 1)TFDMemTable查询数据 procedure TForm1.Qrys(accountno, sql, sql2: string; Dat ...

  8. Code First 迁移----官方 应用程序启动时自动升级(MigrateDatabaseToLatestVersion 初始值设定项)

    Code First 迁移 如果使用的是 Code First 工作流,推荐使用 Code First 迁移改进应用程序的数据库架构. 迁移提供一组允许以下操作的工具: 创建可用于 EF 模型的初始数 ...

  9. (三)OpenCV-Python学习—图像平滑

    由于种种原因,图像中难免会存在噪声,需要对其去除.噪声可以理解为灰度值的随机变化,即拍照过程中引入的一些不想要的像素点.噪声可分为椒盐噪声,高斯噪声,加性噪声和乘性噪声等,参见:https://zhu ...

  10. P1964 【mc生存】卖东西

    P1964 [mc生存]卖东西 题解 很简单, 暴力 注意一个小点就好 代码 #include<iostream> #include<cstdio> #include<c ...