正式学习python的第0天
学习写代码的第N天(实际上第0天)
正式开启被男朋友魔鬼训练的第一天,看大神们的代码来学习python,欢迎查收20181218的学习心得~
摘要
- 类,实例,方法,属性的概念
- loc,iloc和ix索引的使用
- str的内置方法
- concat和merge的使用
- 布尔型索引
- duplicates()的使用
- 方法是否有返回值
一、类,实例,方法,属性的概念
https://blog.csdn.net/weixin_31678985/article/details/79723750
目前是看别人的讲解,后续会出自己的心得版啦~(挖坑中。。。。。。)
二、loc,iloc和ix索引的使用
2.1、使用说明
loc是索引列标签和行标签(也就是index和columns) iloc是索引列号和行号(行号和列号都是从0开始的序列) ix是既可以索引行标签,也可以索引列标签
2.2、举例说明
import pandas as pd data = pd.DataFrame(data = {'X': [1, 2, 3, 4, 5, 6, 7, 8], 'Y': [11, 12, 13, 14, 15, 16, 17, 18]}, index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']) print(data) #四种方式索引第一行数据 print(data.loc['a']) print(data.iloc[0]) print(data.ix['a']) print(data.ix[0]) #四种方式索引第一列数据 print(data.loc[:, ['X']]) print(data.iloc[:, [0]]) print(data.ix[:, ['X']]) print(data.ix[:, [0]]) #四种方式索引多行数据。注意:行号或者列号索引是左闭右开,行标签或者列标签索引是左闭右闭(详见2.3.2) print(data.loc['a':'b']) print(data.iloc[0:2]) print(data.ix['a':'b']) print(data.ix[0:2]) #此时ix是切片索引 #四种方式索引多列数据。索引单列时列需要加上中括号,索引多列时列不需要加上中括号 print(data.loc[:, 'X':'Y']) print(data.iloc[:, 0:2]) print(data.ix[:, 'X':'Y']) print(data.ix[:, 0:2]) #此时ix是切片索引
2.3、两个小问题
2.3.1、 索引index重复的情况
当DataFrame的index重复的时候用loc和ix同时索引行和列可能会出错(出错原因有待探讨)。建议使用iloc来索引。(注意:DataFrame的index可以重复,但是columns不能重复,如果有重复列名则该列值会被最后一次出现此列的值替代)
import pandas as pd data = pd.DataFrame(data = {'X': [1, 2, 3, 4, 5, 6, 7, 8], 'Y': [11, 12, 13, 14, 15, 16, 17, 18]}, index = [0, 1, 0, 1, 0, 1, 1, 0]) print(data) #同时索引行和列的时候 print(data.loc[0:1, 'X':'Y']) #出错无法运行 print(data.ix[0:1, 'X':'Y']) #出错无法运行 print(data.iloc[0:2, 0:2]) #索引前2行前2列
import pandas as pd data = pd.DataFrame(data = {'X': [1, 2, 3, 4, 5, 6, 7, 8], 'Y': [11, 12, 13, 14, 15, 16, 17, 18]}, index = [0, 1, 1, 1, 1, 1, 1, 1]) print(data) #同时索引行和列的时候 print(data.loc[0:1, 'X':'Y']) #可以运行 print(data.ix[0:1, 'X':'Y']) #可以运行 print(data.iloc[0:2, 0:2]) #索引前2行前2列
2.3.2、iloc和loc, ix索引不都是切片索引
import pandas as pd data = pd.DataFrame(data = {0: [1, 2, 3, 4, 5, 6, 7, 8], 1: [11, 12, 13, 14, 15, 16, 17, 18], 2: [21, 22, 23, 24, 25, 26, 27, 28]}, index = [0, 1, 2, 3, 4, 5, 6, 7]) print(data) print(data.iloc[0:2, 0:2]) #索引前2行前2列 print(data.loc[0:2, 0:2]) #索引前3行前3列 print(data.ix[0:2, 0:2]) #索引前3行前3列
通过上述例子可以发现iloc索引是切片索引,即左闭右开,loc索引是左闭右闭,但是ix有时候是左闭右开,有时候是左闭右闭,可能这就是现在都不推荐使用ix的原因吧~
三、str的内置方法
https://www.jianshu.com/p/e2d48c64b404
这个博客写出了Python中str的所有内置方法,有需求可以去上面查看~
四、concat和merge的使用
4.1、concat常用参数说明
参数 | 说明 |
---|---|
objs | 参与连接的列表或字典,且列表或字典里的对象是pandas数据类型,唯一必须给定的参数 |
axis | 默认是0,0代表index,1代表columns |
join | 默认是outer(并集),inner是交集 |
ignore_index | 忽略连接轴上的索引,产生一组新索引range(length) |
4.2、merge常用参数说明
参数 | 说明 |
---|---|
right | 参与连接的DataFarme |
how | 默认inner,可选:{‘left’, ‘right’, ‘outer’}, |
on | 用于连接的列名,必须同时存在于两个DataFrame中,如果未指定,则以left和right列名的交集作为连接键 |
left_on | 左侧DataFarme中用作连接键的列 |
right_on | 右侧DataFarme中用作连接键的列 |
left_index | 将左侧DataFarme的行索引用作其连接键 |
right_index | 将右侧DataFarme的行索引用作其连接键 |
4.3、举例说明
import pandas as pd data_1 = pd.DataFrame(data = {'X': [1, 2, 3], 'Y': [11, 12, 13]}) data_2 = pd.DataFrame(data = {'Z': [ 4, 5, 6], 'Y': [11, 12, 19]}) print(data_1) print(data_2) print(data_1.merge(data_2, on='Y', how='inner')) #内连接,取交集 print(data_1.merge(data_2, on='Y', how='outer')) #外连接,取并集,没有值部分补充NaN print(data_1.merge(data_2, on='Y', how='left')) #左连接,以左边作为连接基础,右边可丢弃或补充NaN print(data_1.merge(data_2, on='Y', how='right')) #右连接,以右边作为连接基础,左边可丢弃或补充NaN
结果如下:
import pandas as pd s1 = pd.Series([0, 1, 2], index = ['a', 'b', 'c']) s2 = pd.Series([2, 3, 4], index = ['c', 'f', 'e']) s3 = pd.Series([4, 5, 6], index = ['c', 'f', 'g']) print(pd.concat([s1, s2, s3])) #直接连接所有表 print(pd.concat([s1,s2,s3],ignore_index = True)) #生成新的索引
结果如下:
五、布尔型索引
布尔型索引可以索引Series,list或者数组,不能索引DataFrame。布尔型索引结果是一个布尔型数组。
六、drop_duplicates()的使用
import pandas as pd data = pd.DataFrame({'A':[1, 1, 2, 2], 'B':['a', 'a', 'b', 'b']}) print(data) data.drop_duplicates(inplace = True) print(data)
结果如下:
七、方法是否有返回值
#无返回值的方法 data = [1, 2, 5, 7, 3, 4] a = data.sort() print('data的结果是:',data) print('a的结果是:',a) #有返回值的方法 Str = 'ABCdefgh' a = Str.replace('ABC', 'abc') print('Str的结果是:',Str) print('a的结果是:',a)
结果如下:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
(Python)零起步数学+神经网络入门
在这篇文章中,我们将在Python中从头开始了解用于构建具有各种层神经网络(完全连接,卷积等)的小型库中的机器学习和代码。最终,我们将能够写出如下内容: 假设你对神经网络已经有一定的了解,这篇文章的目的不是解释为什么构建这些模型,而是要说明如何正确实现。 逐层 我们这里需要牢记整个框架: 1. 将数据输入神经网络 2. 在得出输出之前,数据从一层流向下一层 3. 一旦得到输出,就可以计算出一个标量误差。 4. 最后,可以通过相对于参数本身减去误差的导数来调整给定参数(权重或偏差)。 5. 遍历整个过程。 最重要的一步是第四步。我们希望能够拥有任意数量的层,以及任何类型的层。但是如果修改/添加/删除网络中的一个层,网络的输出将会改变,误差也将改变,误差相对于参数的导数也将改变。无论网络架构如何、激活函数如何、损
- 下一篇
了解Joomla
首先,Joomla是一套开源的内容管理系统(简称CMS)。我们可以理解为它是一套免费、好用的建站系统。它本身就是一套网站,在你安装后你就立刻拥有了一套完整的网站。当然,全球有很多开源内容管理系统,比如和Joomla一样知名的Drupal和WordPress系统。但Joomla是唯一连续5年被评为最好的“开源内容管理系统”,2017年再次拨得头筹获得“开源CMS冠军”,可见它的优势并非浪得虚名。 从技术层面来讲:它基于PHP+HTML5代码结构组成的整站程序,结合Mysql数据库进行内容存储...我想作为普通用户很不喜欢听技术层面的东西,我们在这里用比较直白的方式对Joomla的使用角度进行介绍,当然百度上也有很多Joomla的相关介绍,各位有兴趣可以进一步查询了解。(本章作为选读内容,供大家做简单了解,不影响后续课程学习工作),作为资深Joomla从业者,我更喜欢从用户角度来做分享Joomla的来龙去脉: Joomla应用领域:作为内容管理系统,Joomla当然的核心优势就在于各种类型的内容发布管理,包括文字、图片、音频视频、文件等。 由于它非常安全且功能灵活的特性,Joomla非常适...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Mario游戏-低调大师作品