利用Python进行数据分析_Pandas_数据结构
申明:本系列文章是自己在学习《利用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_数据结构的更多相关文章
- 利用Python进行数据分析_Pandas_数据加载、存储与文件格式
申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 1 pandas读取文件的解析函数 read_csv 读取带分隔符的数据,默认 ...
- 利用Python进行数据分析_Pandas_层次化索引
申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 层次化索引主要解决低纬度形式处理高纬度数据的问题 import pandas ...
- 利用Python进行数据分析_Pandas_处理缺失数据
申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 1 读取excel数据 import pandas as pd import ...
- 利用Python进行数据分析_Pandas_汇总和计算描述统计
申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. In [1]: import numpy as np In [2]: impo ...
- 利用Python进行数据分析_Pandas_基本功能
申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 第一 重新索引 Series的reindex方法 In [15]: obj = ...
- 利用Python进行数据分析_Pandas_数据清理、转换、合并、重塑
1 合并数据集 pandas.merge pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, le ...
- 利用Python进行数据分析_Pandas_绘图和可视化_Matplotlib
1 认识Figure和Subplot import matplotlib.pyplot as plt matplotlib的图像都位于Figure对象中 fg = plt.figure() 通过add ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 《利用python进行数据分析》读书笔记 --第一、二章 准备与例子
http://www.cnblogs.com/batteryhp/p/4868348.html 第一章 准备工作 今天开始码这本书--<利用python进行数据分析>.R和python都得 ...
随机推荐
- [bzoj 5143][Ynoi 2018]五彩斑斓的世界
传送门 Descroption 给了你一个长为n的序列a,有m次操作 1.把区间[l,r]中大于x的数减去x 2.查询区间[l,r]中x的出现次数 Solution 分块 对于每个块,我们都分别维护: ...
- 【java反射】
反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释. 一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的.于是我们直接对这个类进行实例化,之后使用这个类对象进行操作. A ...
- git补充(命令)转自https://github.com/Wasdns/github-example-repo
在使用命令行进行提交时,通常使用git commit -m '注释信息'来填写commit注释信息,但是-m参数适合单行注释,对于多行的commit注释来说是不合适的.这里推荐使用git commit ...
- windows7 10 windows2008 windws2012 nfs客户端的安装
servermanagercmd.exe -install FS-NFS-Services for windows2008 windows2012 在添加功能角色-添加文件打印服务选择nfs客户端 ...
- 数据库Sequence创建与使用
最近几天使用Oracle的sequence序列号,发现对如何创建.修改.使用存在很多迷茫点,在上网寻找答案后,根据各路大神的总结,汇总下对自己的学习成果: 在Oracle中sequence就是序号,每 ...
- P1964 【mc生存】卖东西
P1964 [mc生存]卖东西 题解 很简单, 暴力 注意一个小点就好 代码 #include<iostream> #include<cstdio> #include<c ...
- Mac下安装php-memcached扩展
[libmemcached安装] libmemcached可以通过直接下载后解压也可以采用wget下载 先下载libmemcached:方式一:libmemcached下载地址:https://lau ...
- SQL-W3School-函数:SQL COUNT() 函数
ylbtech-SQL-W3School-函数:SQL COUNT() 函数 1.返回顶部 1. COUNT() 函数返回匹配指定条件的行数. SQL COUNT() 语法 SQL COUNT(col ...
- WPF窗体应用程序开发
1.Window:登录窗口.主窗体.消息框 2.UserControl:业务界面.消息框(如果使用UC来实现,则需要做特殊的处理,比如中断功能如何处理?)(显示一个UC,必须将其添加到容器中,所以&l ...
- topK问题
概述 在N个乱序数字中查找第K大的数字,时间复杂度可以减小至O(N). 可能存在的限制条件: 要求时间和空间消耗最小.海量数据.待排序的数据可能是浮点型等. 方法 方法一 对所有元素进行排序,之后取出 ...