【Python】一篇文章学习Pandas包 Pandas Series、DataFrame 对比学习
一、Series与python字典对比
Series兼并了数组和字典的功能,既可以看作是一种特殊的字典,又可以看成是通用的Numpy数组。既可以支持数组的切片操作等,还可以运用字典获取values的方法,举例:
dic={1:'beijing',2:'xiaan',3:'tianjing',4:'japan','five':'American'}
nums=[1,2,3,4,'five']
series=pd.Series(dic,index=nums)
#字典的取值方法
print('dic:',dic['five'])
print('series:',series['five'])
#数组切片
#注意结果是不包含区间左端的
print("切片结果:",series[1:3])
Series的index和字典一样都是无法更改的
- 两种创建Series的方法
dic={1:'beijing',2:'xiaan',3:'tianjing',4:'japan'}
nums=[1,2,3]
series=pd.Series(dic,index=nums)
series1=pd.Series(['a','b','c'],index=[1,2,3])
print("values:"," ".join(series.values))
print(series1)values: beijing xiaan tianjing
1 a
2 b
3 c
dtype: object
- Series数据提取
Series当作一维数组看时,花哨的索引数据选择法
dic=1:'beijing',2:'xiaan',3:'tianjing',4:'japan','five':'American','six':'Tailand','seven':'Korea'}
nums=[1,2,3,4,'five','six','seven']
series=pd.Series(dic,index=nums)
#混合索引 数组取值
print("混合索引 数组取值:",series[[2,'five']])
#混合索引 数组切片 报错 不能不同类型的索引类型混合切片
# print("切片结果:",series[2:'old'])
混合索引 数组取值: 2 xiaan
five American
dtype: object
用隐式索引和显示索引两种切片
#数组切片--隐式索引
#注意结果是不包含区间左端的
print("切片结果:",series[1:3])
#数组切片 --显式索引
print("切片结果2:",series['five':'seven'])切片结果: 2 xiaan
3 tianjing
dtype: object
切片结果2: five American
six Tailand
seven Korea
- 两种索引器
import pandas as pd
#索引器
data = pd.Series({1:'Zames',2:'Jack',3:'Marry',4:'Jess'})
#取值和切片都是显式的
print(data.loc[1])
print(data.loc[1:3])
#取值和切片都是隐式的
print(data.iloc[1])
print(data.iloc[1:3])
这里显式和隐式的区分在于:Series打印出来它的列索引所显示的就是显式定义的索引,而数组比如[1,2,3,4,5,6]索引相当于【0,1,2,3,4,5】,相对来说就是隐式定义的索引了。loc针对显式的索引,即索引的数字是在Series对象中显式定义的。
二、DataFrame与其他数据类型对比
DataFrame可以看作同时拥有灵活的行索引和列名的二维数组,也可以看作是有序排列的Series对象,还可以看成一系列键(即列属性) 映射一个Series数据的字典。
举例如下
#建立
import pandas as pd
num_stu=pd.Series([1001,1002,1003,1004,1024,1025],index=['Zames','Jess','Lily','Poter','Lupin','Jupyter'])
nn_stu=pd.Series(['tank','Bear','mum','dad','fri','plat'],index=['Zames','Jess','Lily','Poter','Lupin','Jupyter'])
stu=pd.DataFrame({'num':num_stu,'nn':nn_stu})#括号内用的是字典方法建立DataFrame
stu
DataFrame的索引是无名的,而其他列都可以在创建时设定名称,使用index获取;而其他列使用columns获取,返回的都是Index对象
print(stu.index)
print(stu.columns)
Index(['Zames', 'Jess', 'Lily', 'Poter', 'Lupin', 'Jupyter'], dtype='object')
Index(['num', 'nn'], dtype='object')
- DataFrame的创建
(1)使用元素为字典的列表建立
(2)Series对象:单个Series对象建立
num_stu=pd.Series([1001,1002,1003,1004,1024,1025],index=['Zames','Jess','Lily','Poter','Lupin','Jupyter'])
stu=pd.DataFrame(num_stu,columns=['num'])#单个Series对象建立,直接设定columns name
通过Series为values的字典建立
num_stu=pd.Series([1001,1002,1003,1004,1024,1025],index=['Zames','Jess','Lily','Poter','Lupin','Jupyter'])
nn_stu=pd.Series(['tank','Bear','mum','dad','fri','plat'],index=['Zames','Jess','Lily','Poter','Lupin','Jupyter'])
stu=pd.DataFrame({'num':num_stu,'nn':nn_stu})
#values为Series对象的字典可以用于创建DataFrame
(3)Numpy数组ndarray建立:通过ndarray的二维数组建立,使用DataFrame方法时设立columns name&index name;结构化数组建立
我理解的是,结构化数组就是数组不仅可以按照行索引,列也是有名称可以被索引的。
#建立结构化数组
import numpy as np
teacher_name = ['Zames','Manchester','Li','Jyx']
teacher_age = [30,29,28,27]
teacher_marriage=['F','T','F','T']
teachers=np.zeros(4,dtype={'names':('name','age','marriage'),'formats':('U10','i4','U2')})
teachers['name']=teacher_name#要记得用单引号
teachers['age']=teacher_age
teachers['marriage']=teacher_marriage
#建立DataFrame
pd.DataFrame(teachers)
(4)外源数据创建
read_table(‘文件路径’,(sep=’\t’(表示文件中字段间分隔符为TAB)),(header=None(表示默认没有列名,header=0则表示第0行为列名))
read_csv(‘file_path’,header=None,sep=’\t’)
- DataFrame数据选取
(1)字典式的索引方法获取列数据
#与字典相似的列索引
teacher['name']0 Zames
1 Manchester
2 Li
3 Jyx
Name: name, dtype: object
用这个方法也可以给DataFrame对象增加新列
teacher['new']=pd.Series([0,1,2,3],index=[0,1,2,3])
teacher[['new','name']]new name
0 0 Zames
1 1 Manchester
2 2 Li
3 3 Jyx
(2)字典式的方法获取单行数据
teacher.values[0]
array(['Zames', 30, 'F', 0], dtype=object)
对比以上两种不同的索引方法,一种是获取行数据和,一种是获取列数据的
(3)三种索引器
print(teacher)
print(teacher.loc[:"Li",:'age'])#显式 columns_names
print(teacher.iloc[:3,:2])#隐式 数字
print(teacher.ix[:2,:'age'])#混合使用name age marriage new
0 Zames 30 F 0
1 Manchester 29 T 1
2 Li 28 F 2
3 Jyx 27 T 3name age
0 Zames 30
1 Manchester 29
2 Li 28
3 Jyx 27name age
0 Zames 30
1 Manchester 29
2 Li 28name age
0 Zames 30
1 Manchester 29
2 Li 28
【Python】一篇文章学习Pandas包 Pandas Series、DataFrame 对比学习相关推荐
- pandas数据结构:Series/DataFrame;python函数:range/arange
1. Series Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index). 1.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会 ...
- 监督学习和无监督学习_一篇文章区分监督学习、无监督学习和强化学习
经过之前的一些积累,终于有勇气开始进军机器学习了!说实话,机器学习 这个概念是我入行的最纯粹的原因,包括大学选专业.学习 Python 语言-这些有时间仔细梳理下经历再写,总之这个系列的文章就是我自学 ...
- 【EMNLP 2021】SimCSE:句子嵌入的简单对比学习 【CVPR 2021】理解对比学习损失函数及温度系数
1. 介绍 SimCSE(Simple Contrastive Learning of Sentence Embeddings)是一种简单在没有监督训练数据的情况下训练句子向量的对比学习方法. 这个方 ...
- 一篇文章带你了解pandas
pandas Series s = pandas.Series({'key1':value1,'key2':value2}) 生成类似字典的键值列表 s = pandas.Series([value1 ...
- 【Golang】一篇文章带你快速了解Go语言为什么你要学习Go语言
目录 1. 为什么互联网世界需要Go语言 1.1 硬件限制:摩尔定律已然失效 1.2 Go语言为并发而生 1.3 Go性能强悍 1.4 Go语言简单易学 1.4.1 语法简洁 1.4.2 代码风格统一 ...
- python | 一篇文章正则表达式全学会
目录 正则表达式的作用 re模块基本用法 1.match与search: 查找第一个匹配 re模块基本用法-raw re模块基本用法-match对象 re模块基本用法-findall 正则替换 re模 ...
- PHP+Mysql查询上一篇和下一篇文章实例
PHP+Mysql查询上一篇和下一篇文章实例 简单的PHP+Mysql查询上一篇和下一篇文章实例,并输出上一篇和下一篇文章的标题和链接,适合新手学习 获取当前浏览文章id: 1 $id = isset ...
- python字典里存字符_Python字典和字符串的学习
学习Python的字典还是和oc的字典进行对比学习,首先我们来创建一个字典.根据oc中字典一样,字典是无序的,根据键来进行取值. oc: oc中的字典分为可变字典和不可变字典,在对字典进行增,删的时候 ...
- 丹琦女神新作:对比学习,简单到只需要Dropout两下
文 | 花小花Posy 上周把 <对比学习有多火?文本聚类都被刷爆了...>分享到卖萌屋的群里后,遭到了群友们一波嫌弃安利. 小伙伴们表示,插入替换的数据增强方式已经Out了,SimCSE ...
最新文章
- 瑞尔森大学的计算机科学专业,瑞尔森大学有哪些专业处于世界顶尖水平?
- java超市管理系统项目,HR的话扎心了
- [转]UI设计小技巧
- 五分钟没有操作自动退出_遇到不喜欢的小动物怎么办?教你五分钟友好的送走小动物!...
- 谈谈 Tomcat 请求处理流程
- .net core 集成 autofac.
- 在运行时在Spring Cloud Config中刷新属性配置
- [html] 写个布局,当页面高度不够时,底部固定在下面,反之不固定
- 课堂练习:eval()、in()
- mysql set substring_MySQL substring()函数
- 排序算法总结(四)快速排序【QUICK SORT】
- 微信公众平台开发者原理图解
- java mail 不用密码_Java之道|Windows MySQL5.7忘记了密码,不要慌,不用重装!!!...
- C++STL标准模板库容器详细实现算法代码
- 如何设计软件类招聘考题
- Centos安装php高版本
- 电力系统三相短路计算机计算报告,电力系统分析三相短路计算习题.doc
- 北京中国科学院计算机专业怎么样,中国科学院北京计算技术研究所计算机技术怎么样...
- 网状结构(图)图的存储(邻接矩阵、邻接表)、图的遍历(深度DFS、广度BFS)、图的最短路径
- win10插入耳机没声音,如何设置声音
热门文章
- RegSVR32 找不到指定模块问题解决
- android水果界面设计,一套小清新的水果元素的APP界面设计欣赏
- 无业务不伸缩之一,云计算有ESS(基础篇)
- outsystems刚做项目时的注意点-划重点
- itools3.0服务器维护,苹果设备管理哪家强?iTools3.0 完胜 iTunes
- 【iTools】iTools Index
- 微信授权登录mock(在没有真实微信账号的情况下测试大量微信账户授权登录的情况)...
- MySQL 支持表情字符
- PHP上传文件大小限制大全
- Java小型综合型练习——打字小游戏