pandas 入门

pandas简介:pandas包含的数据结构和数据处理工具的设计使得利用进行数据清洗和数据分析非常快捷;与numpy的区别,pandas用来处理表格型或异质型数据的,而numpy更适合处理同质型的数值类数据。

1、Series简介

  1、Series是一种一维的数组型对象,包含以一个值序列,并且包含数组标签(称为索引),

pd.Series([4,7,-5,9])    # 不指定标签时,默认索引值和numpy数组相似
>>>Out[108]: 
0    4
1    7
2   -5
3    9
dtype: int64pd.Series([4,7,-5,9],index=['b','a','c','d'])  # 指定标签,标签可以是字符串
>>>Out[109]: 
b    4
a    7
c   -5
d    9
dtype: int64

  2、Series与numpy函数相类似的操作风格:布尔值过滤数据、与标量相乘、应用数学函数等,这些操作将保持索引值链接。

obj = pd.Series([4,7,-5,9],index=['b','a','c','d'])
obj
>>>Out[111]: 
b    4
a    7
c   -5
d    9
dtype: int64
obj2[obj2
> 0]  # 布尔值过滤obj2 * 2      # 标量操作 np.exp(obj2)    # 数学函数操作'b' in obj2    # 逻辑判断 'e' in obj2

  

  3、从两外一个角度考虑Series,可以认为它是一个长度固定且有序的字典。可以将字典型的数据直接转换成Series型数据,并且在将字典传递给Series构造函数时,可以通过指定字典键的顺序使产生的Series保持一定的顺序。

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj1 = pd.Series(sdata)
obj1
>>>Out[5]: 
Ohio      35000
Oregon    16000
Texas     71000
Utah       5000
dtype: int64states = ['California', 'Ohio', 'Oregon', 'Texas']    # 指定标签顺序
obj2 = pd.Series(sdata,index=states)
obj2                                
>>>Out[9]:                           *** NaN使是pandas标记缺失值或NA值的方式
California NaN Ohio
35000.0 Oregon 16000.0 Texas 71000.0

pd.isnull(obj2)      # pandas中使用isnull和notnull函数来检查数据缺失。

>>>Out[10]:
California True
Ohio False
Oregon False
Texas False
dtype: bool

  4、Series自动对齐索引和Series对象自身和其索引都有name属性

***前面的obj1和 obj2相加
obj1 + obj2 >>>Out[13]: California NaN Ohio 70000.0 Oregon 32000.0 Texas 142000.0 Utah NaN dtype: float64

obj2.name = 'population'    # 指定name属性
obj2.index.name = 'state'

obj2
>>>Out[15]:
state
California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
Name: population, dtype: float64

 

 

2、DataFrame简介

  1、DataFrame表示的是矩阵的数据表,既有行索引也有列索引,每一列可以是不同的值类型;DataFrame本身是二维的,但是可以分层索引在DataFrame中展现更高维度的数据。

  2、DataFrame有多种创建方式,常用方式是利用包含等长度列表或NumPy数组的字典来形成DataFrame;如果指定顺序,DataFrame的列将会按照指定顺序排列;

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],'year': [2000, 2001, 2002, 2001, 2002, 2003],'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
import pandas as pd
frame = pd.DataFrame(data)
frame
>>>Out[5]: pop   state  year
0  1.5    Ohio  2000
1  1.7    Ohio  2001
2  3.6    Ohio  2002
3  2.4  Nevada  2001
4  2.9  Nevada  2002
5  3.2  Nevada  2003

pd.DataFrame(data, columns=['year', 'state', 'pop'])        # DataFrame的列会按照指定的顺序排列
>>>Out[6]:
year state pop
0 2000 Ohio 1.5
1 2001 Ohio 1.7
2 2002 Ohio 3.6
3 2001 Nevada 2.4
4 2002 Nevada 2.9
5 2003 Nevada 3.2

frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],    # 若传入的指定的列不存在,将会出现缺失值;可以修改默认标签
index=['one', 'two', 'three', 'four','five', 'six'])              
frame2
>>>Out[8]:
year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 NaN
five 2002 Nevada 2.9 NaN
six 2003 Nevada 3.2 NaN

 

  3、DataFrame中的一列可以按照字典标记或属性那样检索为Series.  格式:frame2['state']、frame2.year;x.columns会给出所有的标签。

frame2.year
>>>Out[10]: 
one      2000
two      2001
three    2002
four     2001
five     2002
six      2003
Name: year, dtype: int64

  4、对于大型的DataFrame,head()方法将来列出头部的5行;DataFrame中选取的列是数据的视图,而不是复制,因此对Series的修改会映射到DataFrame中,需要复制一列的话,采用Series的copy方法,格式:pd.Series.copy(x.column);如果需要复制DataFrame,格式:x.copy([len])。

  5、采用包含字典的嵌套字典创建DataFrame;

pop = {'Nevada': {2001: 2.4, 2002: 2.9},'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop)
frame3
>>>Out[34]:             # 字典的键作为列,内部字典的键值作为行Nevada  Ohio
2000     NaN   1.5
2001     2.4   1.7
2002     2.9   3.6

  6、pandas中的索引对象是用于存储轴标签和其他元数据的,在构造Series和DataFrame时,使用的任意数组或标签序列都可以在内部转换成索引对象,索引对象也包含一系列方法,p135。

obj = pd.Series(range(3), index=['a', 'b', 'c'])
index = obj.index
index    # 索引对象是不可变的,用于无法对索引对象进行修改(尝试修改时会报错);
>>> Out[10]:                           
Index(['a', 'b', 'c'], dtype='object')

 

转载于:https://www.cnblogs.com/Chris-01/p/11444200.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

传智播客软件测试第一期_播客:冒险如何推动一位软件工程师的职业发展

传智播客软件测试第一期On this weeks episode of the freeCodeCamp podcast, Abbey chats with developer and wearer of many hats Princiya about how she changed careers, moved to Berlin, and worked her way up to a lead role.在本周的freeCodeCamp播客节目中&#xf…

爬虫神经网络_股市筛选和分析:在投资中使用网络爬虫,神经网络和回归分析...

爬虫神经网络与AI交易 (Trading with AI) Stock markets tend to react very quickly to a variety of factors such as news, earnings reports, etc. While it may be prudent to develop trading strategies based on fundamental data, the rapid changes in the stock mar…

Promise 原理解析与实现(遵循Promise/A+规范)

1.什么是Promise? Promise是JS异步编程中的重要概念,异步抽象处理对象,是目前比较流行Javascript异步编程解决方案之一 2.对于几种常见异步编程方案 回调函数事件监听发布/订阅Promise对象这里就拿回调函数说说 1.对于回调函数 我们用Jquery的ajax获取数…

php 数据访问练习:投票页面

<!--投票界面--> <html> <head> <title></title> <meta charset"UTF-8"/> <link rel"stylesheet" type"text/css" href"bootstrap.min.css"/> <script src"bootstrap.min.js"…

深入理解InnoDB(3)—索引的存储结构

1. 索引的各种存储结构及其优缺点 1.1 二叉树 优点&#xff1a; 二叉树是一种比顺序结构更加高效地查找目标元素的结构&#xff0c;它可以从第一个父节点开始跟目标元素值比较&#xff0c;如果相等则返回当前节点&#xff0c;如果目标元素值小于当前节点&#xff0c;则移动到左…

有抱负/初级开发人员的良好习惯-避免使用的习惯

When youre learning to code, it can be easy to pick up some nasty habits along the way. Here are some tips to avoid common bad habits, and the good habits to keep in mind.当您学习编码时&#xff0c;很容易在此过程中养成一些讨厌的习惯。 这里有一些技巧&#xf…

业精于勤荒于嬉---Go的GORM查询

查询 //通过主键查询第一条记录 db.First(&user)SELECT * FROM users ORDER BY id LIMIT 1;// 随机取一条记录 db.Take(&user)SELECT * FROM users LIMIT 1;// 通过主键查询最后一条记录 db.Last(&user)SELECT * FROM users ORDER BY id DESC LIMIT 1;// 拿到所有的…

apache 虚拟主机详细配置:http.conf配置详解

Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置&#xff0c;因此下面的配置指令都是在httpd.conf文件中修改。主站点的配置(基本配置) (1) 基本配置:ServerRoot "/mnt/software/apache2" #你的apache软件安装的位置。其它指定的目录如果没…

深入理解InnoDB(4)—索引使用

1. 索引的代价 在了解索引的代价之前&#xff0c;需要再次回顾一下索引的数据结构B树 如上图&#xff0c;是一颗b树&#xff0c;关于b树的定义可以参见B树&#xff0c;这里只说一些重点&#xff0c;浅蓝色的块我们称之为一个磁盘块&#xff0c;可以看到每个磁盘块包含几个数据…

[BZOJ1626][Usaco2007 Dec]Building Roads 修建道路

1626: [Usaco2007 Dec]Building Roads 修建道路 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1730 Solved: 727 [Submit][Status][Discuss]Description Farmer John最近得到了一些新的农场&#xff0c;他想新修一些道路使得他的所有农场可以经过原有的或是新修的道路互达…

双城记s001_双城记! (使用数据讲故事)

双城记s001Keywords: Data science, Machine learning, Python, Web scraping, Foursquare关键字&#xff1a;数据科学&#xff0c;机器学习&#xff0c;Python&#xff0c;Web抓取&#xff0c;Foursquare https://br.pinterest.com/pin/92816442292506979/https://br.pintere…

python:linux中升级python版本

https://www.cnblogs.com/gne-hwz/p/8586430.html 转载于:https://www.cnblogs.com/gcgc/p/11446403.html

web前端面试总结

2019独角兽企业重金招聘Python工程师标准>>> 摘要&#xff1a;前端的东西特别多&#xff0c;面试的时候我们如何从容应对&#xff0c;作为一个老兵&#xff0c;我在这里分享几点我的经验。 一、javascript 基础(es5) 1、原型&#xff1a;这里可以谈很多&#xff0c;…

783. 二叉搜索树节点最小距离(dfs)

给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 注意&#xff1a;本题与 530&#xff1a;https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同 示例 1&#xff1a; 输入&#xff1a;root [4,2,6,1,3] 输…

linux epoll机制对TCP 客户端和服务端的监听C代码通用框架实现

1 TCP简介 tcp是一种基于流的应用层协议&#xff0c;其“可靠的数据传输”实现的原理就是&#xff0c;“拥塞控制”的滑动窗口机制&#xff0c;该机制包含的算法主要有“慢启动”&#xff0c;“拥塞避免”&#xff0c;“快速重传”。 2 TCP socket建立和epoll监听实现 数据结构…

linux中安装robot环境

https://www.cnblogs.com/lgqboke/p/8252488.html&#xff08;文中验证robotframework命令应该为 robot --version&#xff09; 可能遇到的问题&#xff1a; 1、python版本太低 解决&#xff1a;升级python https://www.cnblogs.com/huaxingtianxia/p/7986734.html 2、pip安装报…

angular 模块构建_我如何在Angular 4和Magento上构建人力资源门户

angular 模块构建Sometimes trying a new technology mashup works wonders. Both Magento 2 Angular 4 are very commonly talked about, and many consider them to be the future of the development industry. 有时尝试新技术的mashup会产生奇迹。 Magento 2 Angular 4都…

tableau破解方法_使用Tableau浏览Netflix内容的简单方法

tableau破解方法Are you struggling to perform EDA with R and Python?? Here is an easy way to do exploratory data analysis using Tableau.您是否正在努力使用R和Python执行EDA&#xff1f; 这是使用Tableau进行探索性数据分析的简单方法。 Lets Dive in to know the …

六周第三次课

2019独角兽企业重金招聘Python工程师标准>>> 六周第三次课 9.6/9.7 awk awk也是流式编辑器&#xff0c;针对文档中的行来操作&#xff0c;一行一行地执行。 awk比sed更强大的功能是它支持了分段。 -F选项的作用是指定分隔符&#xff0c;如果不加-F选项&#xff0c;…

面试题字符集和编码区别_您和理想工作之间的一件事-编码面试!

面试题字符集和编码区别A recruiter calls you for a position with your dream company. You get extremely excited and ask about their recruiting process. He replies saying “Its nothing big, you will have 5 coding rounds with our senior tech team, just the sta…