楼主: CDA网校
2419 6

[网帖精选] Python数据分析基础教程 [推广有奖]

管理员

大师

62%

还不是VIP/贵宾

-

威望
3
论坛币
30923 个
通用积分
3027.6894
学术水平
260 点
热心指数
268 点
信用等级
235 点
经验
194744 点
帖子
5102
精华
19
在线时间
3689 小时
注册时间
2019-9-13
最后登录
2024-4-26

初级热心勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

Python数据分析基础教程:获取数据源



俗话说,巧妇难为无米之炊。不管你厨艺有多好,如果没有食材,也做不出香甜可口的饭菜来,所以想要做出饭菜来,首先要做的就是要买米买菜。而数据分析就好比是做饭,首先也应该是准备食材,也就是获取数据源。

一、导入外部数据

导入数据主要用到的是Pandas里的read_x()方法,x表示待导入文件的格式。


1、导入.xlsx文件


在Excel中导入.xlsx格式的文件时很简单的,双击打开就可以了。在Python中导入.xlsx文件的是read_excel()这种方法。


(1)基本导入


在导入文件的时候首先要指定文件的路径,也就是这个文件在电脑中的哪个文件夹下存放着。


         




电脑中的文件路径默认是使用\的,这个时候需要在路径前面加一个r(转义符)避免路径里面的\被转义。也可以不加转义符r,但是需要把路径里面所有的\转换成/,这个规则在导入其他格式文件的时候也是一样的,我们一般会选择在路径前面加转义符r。


         




         




(2)指定导入哪个Sheet


.xlsx格式的文件可以有很多个Sheet,你可以通过设定sheet_name参数来指定要导入哪个Sheet的文件。


         




除了可以指定具体Sheet的名字,还可以传入Sheet的顺序,从0开始计数。


         




如果不指定sheet_name参数的时候,那么默认导入的都是第一个sheet的文件。


(3)指定行索引


将本地文件导入DataFrame的时候,行索引使用的是从0 开始的默认索引,可以通过设置index_col参数来设置。


         




index_col表示用.xlsx文件中的第几列做行索引,从0 开始计数。


(4)指定列索引


将本地文件导入DataFrame的时候,默认使用的是源数据表的第一行作为列索引,也可以通过设置header参数来设置列索引。header参数值默认为0,即用第一行作为列索引;也可以是其他行,只需要传入具体的那一行即可;也可以使用默认从0开始的数作为列索引。


         




(5)指定导入列


有的时候本地文件的列数太多,而我们又不需要那么多列的时候,我们就可以通过设定usecols参数来指定要导入的列。


         




可以给usecols 参数具体的某个值,表示要导入第几列,同样是从0开始计数,也可以以列表的形式传入多个值,表示要传入哪些列。


         




2、导入.csv文件


在Excel中导入.csv格式的文件和打开.xlsx格式的问价是一样的,双击即可。而在Python中导入.csv问价用的方法是read_csv()。


(1)直接导入


只需要指明文件路径即可。


         




(2)指明分隔符号


在Excel和DataFrame中的数据都是很规整的排列的,这都是工具在后台根据某条规则进行切分的。read_csv()默认文件中的数据都是以逗号分开的,但是有的文件不是用逗号分开的,这个时候就需要人为指定分隔符号,否则就会报错。


新建一个以空格作为分隔符号的文件,如下图所示:


         




如果用默认的逗号作为分隔符号,看看导入的数是什么样的。


         




         




我们看到所有的数据还是一个整体,并没有被分开,把分隔符号换成空格以后再看看效果:


         




使用正确的分隔符号以后,数据被规整的分好了。常见的分隔符号除了逗号、空格,还有制表符(\t)。


(3)指明读取行数


假设现在有一个几百兆的文件,你想了解一下这个文件里有哪些数据,那么这个时候你就没必要把全部数据都导入,你只要看到前面几行即可,因此只要设置nrows参数即可。


         




(4)指定编码格式


Python用得比较多的两种编码格式是UTF-8和gbk,默认编码格式是UTF-8。我们要根据导入文件本身的编码格式进行设置,通过设置参数encoding来设置导入的编码格式。有的时候两个文件看起来一样,它们的文件名一样,格式一样,但是如果它们的编码格式不一样,也是不一样的文件


比如当你把一个Excel文件另存为时会出现两个选项,虽然都是.csv文件,但是这两种格式代表两种不同的文件,如下图所示:


         




如果CSV UTF-8(逗号分隔)(*.csv)格式的文件,那么导入的时候就需要加encoding参数。


         




你也可以不加encoding参数,因为Python默认的编码格式就是UTF-8。


         




如果CSV(逗号分隔)(*.csv)格式的文件,那么在导入的时候就需要把编码格式更改为gbk,如果使用UTF-8就会报错。


         




(5)engine指定


当文件路径或者文件名中包含中文时,如果还用上面的导入方式就会报错。


         




这个时候我们就可以通过设置engine参数来消除这个错误。这个错误产生的原因是当调用read_csv()方法时,默认使用C语言作为解析语言,我们只需要把默认值C更改为Python就可以了,如果文件格式是CSV UTF-8(逗号分隔)(*.csv),那么编码格式也需要跟着变为utf-8-sig,如果文件格式是CSV(逗号分隔)(*.csv)格式,对应的编码格式则为gbk。


         




(6)其他


.csv文件也涉及行、列索引设置及指定导入某列或者某几行,设定方法与导入.xlsx文件一致。


3、导入.txt文件


(1)Excel实现


在Excel中导入.txt文件时,我们需要通过依次单击菜单栏中的数据>获取外部数据>自文本,然后选择要导入的.txt文件所在的路径,如下图所示:


         




选完路径以后会出现如下图所示的界面,预览文件就是我们要导入的文件,确认无误后按下一步按钮即可。


         




因为我们举例.txt 文件用空格分开的,所以在分隔符号项勾选空格复选框,如果待导入的.txt 文件是用其他分隔符号分隔的,那么选择对应的分隔符号,然后直接按完成按钮即可,如下图所示:


         




(2)Python实现


在Python中导入.txt文件用的方法是read_table()是将利用分隔符号分开的文件导入DataFrame的通用函数。它不仅可以导入.txt文件,还可以导入.csv文件。


         




从上面的代码可以看出,函数在导入.csv文件时,与read_csv()函数不同的是,即使是逗号分隔开的问价也是需要用sep指明分隔符号的,而不是像read_csv()函数那样,如果文件是逗号分隔的,则可以不用写。

read_table()函数其他参数的用法与read_csv()函数的基本一致。


4、导入sql文件


(1)Excel实现


Excel可以直接连接数据库,通过依次单击菜单栏中的数据>自其他来源导入sql文件。如果你的数据库是SQL Server,那么直接选择来自SQL Server即可;如果是MySQL数据库,那么你需要选择来自数据连接向导,然后通过建立数据向导来与MySQL连接,如下图所示:


         




(2)Python实现


Python导入SQL文件主要分为两步,第一步将Python与数据库进行连接,第二步是利用Python执行SQL查询语句。


将python与数据库连接时利用的是python模块,这个模块Anaconda没有,需要我们手动安装的,打开Anaconda Promt,然后输入pip install pymysql进行安装即可,安装完成以后直接用import导入就可以使用了,具体连接方法如下:


         




连接好数据库以后,我们就可以执行SQL查询语句了,利用的是read_sql()方法。


         




         




除了sql和con这两个关键参数,read_table()函数也有用来设置行索引的参数index_col,设置列索引的columns,实例如下:


         




二、新建数据

这里的新建数据主要指新建DataFrame数据,我们在之前谈到过,利用pd.Dataframe()方法进行新建。


三、熟悉数据

当我们有了数据源以后,先别急着分析,应该先熟悉数据,只有对数据充分熟悉了,才能更好的进行分析。


1、利用head预览前几行


当数据表中包含数据行数过多时,而我们又想看一下每一列数据都是什么样的数据时,就可以只把数据表中前几行数据显示出来进行查看。


(1)Excel实现


Excel其实没有严格意义的显示前几行,当你打开一个数据表时,所有的数据就全部都展示出来了,如果数据的行数过多,则可以通过滚动条来控制。


(2)Python实现


在Python中,当一个文件导入后,可以用head()方法来控制要显示哪些行。只需要在head后面的括号中输入要展示的行数即可,默认展示前5行。


         




2、利用shape获取数据表的大小


熟悉数据的第一点就是先看一下数据表的大小,即数据表有多少行、多少列。


(1)Excel实现


在Excel中查看数据表有多少行,一般都是选中某一列,右下角就会出现该表的行数,如下图所示:


         




在Excel中选中某一行,右下角就会出现该表的列数,如下图所示:


         




(2)Python实现


在Python中获取数据表的行、列数利用的是shape方法。


         




Shape方法会以元组的形式返回行、列数,上面代码中的(4,4)表示df表有4行4列数据。这里需要注意的是,Python中利用shape方法获取行数和列数时不会把行索引和列索引计算在内,而Excel中是把行索引和列索引计算在内的。


3、利用info获取数据类型


熟悉数据的第二点就是看一下数据类型,不同的数据类型的分析思路是不一样的,比如数值类型的数据可以求均值,但是字符串类型的数据就没法求均值了。


(1)Excel实现


在Excel中若想看某一列数据具体是什么类型的,只要把这一列选中,然后再菜单栏中的数字那一栏就可以看到这一列的数据类型。


年龄为数值类型,如下图所示:


         




性别为文本类型,如下图所示:


         




(2)Python实现


在Python中我们可以利用info()方法查看数据表中的数据类型,而且不需要一列一列查看,在调用info()方法以后就会输出整个表中所有列的数据类型。


         




通过info()方法可以看出表df的行索引index是0到3,总共4columns,分别是编号、年龄、性别以及注册时间,且4columns中只有年龄是int类型,其他columns都是object类型,共占用内存208bytes。


4、利用describe获取数值分布情况


熟悉数据的第三点就是掌握数值的分布情况,即均值是多少,最值是多少,方差及分位数分别又是多少。


(1)Excel实现


在Excel中如果想看某列的数值分布情况,那么手动选中这一列,在Excel的右下角就会显示出这一列的平均值、计数及求和,且只显示这三个指标,如下图所示。


         




(2)Python实现


在Python中只需要利用describe()方法就可以获取所有数值类型字段的分布值。


         




         




表df中只有年龄这一列是数值类型,所以调用describe()方法时,只计算了年龄这一列的相关数值分布情况。我们可以新建一个含有多列数值类型字段的DataFrame。


         




上面的表df中年龄、收入、家属数都是数值类型,所以在调用describe()方法的时候,会同时计算这三列的数值分布情况。



Python编程零基础入门  http://edu.cda.cn/course/1307

最适合大数据科学Python基础编程课 【课程简介】本课程面向零基础小白,以Python最热门的应用...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Python数据分析 python 数据分析 基础教程 Dataframe

沙发
CDA网校 学生认证  发表于 2020-4-2 11:12:53 |只看作者 |坛友微信交流群

从菜市场买来的菜,总有一些不太好的,所以把菜买回来以后要先做一遍预处理,把那些不太好的部分扔掉。现实中大部分的数据都类似于菜市场的菜品,拿到以后都要先做一次预处理。


常见的不规整的数据主要有缺失数据、重复数据、异常数据几种,在开始正式的数据分许之前,我们需要先把这些不太规整的数据处理掉。


一、缺失值的处理

缺失值就是由某些原因导致部分数据为空,对于为空的这部分数据我们一般有两种处理方式,一种是删除,即把含有缺失值的数据删除;另一种是填充,即把缺失的那部分数据用某个值代替。


1、缺失值查看


对缺失值进行处理,首先要把缺失值找出来,也就是查看哪列有缺失值。


(1)Excel实现


在Excel中我们先选中一列没有缺失值的数据,看一下这一列数据共有多少个,然后把其他列的计数与这一列进行对比,小于这一列数据个数的就代表有缺失值,差值就是缺失的个数。


下图中非缺失值列的数据计数为5,性别这一列的计数为4,这就表示性别这一列有1个缺失值。


         




如果想看整个数据表中每列数据的缺失情况,则要挨个选中每一列去判断该列是否有缺失值。


如果数据不是特别多,你想看具体是哪个单元格缺失,则可以利用定位条件(按快捷键Ctrl+G可弹出定位条件的对话框)查找。在定位条件的对话框中选择空值,单击确定就会把所有的空值选中,如下图所示:


         




通过定位条件把缺失值选出来的结果,如下图所示:


         




(2)Python实现


在Python中直接调用info()方法就会返回每一列值的缺失情况。关于info()方法我们在前面就用过,但是没有说明这个方法可以判断数据的缺失情况。


         




Python中缺失值一般用NaN表示,从用info()方法的结果来看,性别这一列是3non-null object,表示性别这一列有3个非null值,而其他列有4个非null值,说明性别这一列有一个null值。


我们还可以用isnull()方法来判断那个值是缺失值,如果是缺失值则返回True,如果不是缺失值则返回False。


         




2、缺失值删除


缺失值分为两种,一种是一行中某个字段是缺失值;另一种是一行中的一个字段全部为缺失值,即为一个空白行。


(1)Excel实现


在Excel中,这两种缺失值都可以通过在定位条件(按快捷键Ctrl+G可弹出定位条件的对话框)对话框中选择空值找到。


这样含有缺失值的部分就会被选中,包括某个具体的单元格及一整行,然后单击鼠标右键在弹出的删除对话框中选择删除整行选项,并单击确定按钮即可实现整行的删除。


         




(2)Python实现


在Python中,我们利用的是dropna()的方法,dropna()的方法默认删除含有缺失值的行,也就是只有某一行有缺失值就把这一行删除。


         




运行dropna()方法以后,删除含有NaN的行,返回删除后的数据。如果想删除空白行,只要给dropna()方法传入一个参数how=all即可,这样就会只删除哪些全为空值的行了,不全为空值的行就不会被删除。


         




         




上表第二行中只有性别这个字段是空值,所以在利用dropna(how=“all”)的时候并没有删除第二行,只是把全为NaN值的第三行删除掉了。


3、缺失值填充


上面 介绍了缺失值的删除,但是数据是宝贵的,一般情况下只要数据缺失比例不是过高(不大于30%),尽量别删除,而是选择填充。


(1)Excel实现


在Excel中,缺失值的填充和缺失值的删除一样,利用的也是定位条件,先把缺失值找到,然后在第一个缺失值的单元格中输入要填充的值,最常用的就是用0填充,输入以后按Ctrl+Enter组合键就可以对所有的缺失值进行填充。


缺失值填充前后的对比如下图所示:


         




年龄用数字填充合适,但是性别用数字填充就不太合适,那么可不可以分开填充呢?答案是可以的,选中要填充的那一列,按照填充全部数据的方式进行填充即可,只不过要填充几列,需要执行几次操作。


         




上图是填充前后的对比,年龄这一列我们用平均值进行填充,性别这一列我们用众数进行填充。


除了用0填充、平均值填充、众数(大多数)填充,还有向前填充(即用缺失值的前一个非缺失值填充,比如上例中编号A3对应的缺失年龄的前一个非缺失值就是16)、向后填充(与向前填充对应)等方式。


(2)Python实现


在Python中,我们利用的fillna()方法对数据表中的所有缺失值进行填充,在fillna后面的括号中输入要填充的值即可。


         




在Python中我们也可以按不同列填充,只要在fillna()方法的括号中指明列名即可。


         




上面代码中只针对这一列进行了填充,其他列未进行任何更改。


也可以同时对多列填充不同的值:


         




二、重复值处理

重复数据就是同样的记录有多条,对于这样的数据我们一般做删除处理。


假设你是一名数据分析师,你的主要工作是分析公司的销售情况,现有公司2018年8月的销售明细(一直一条明细对应一笔成交记录),你想看一下8月份整体成交量是多少,最简单的方式就是看一下有多少条成交明细。但是这里可能会有重复的成交记录存在,所以要先删除重复项。


(1)Excel实现


在Excel中依次单击菜单栏中的数据>数据工具>删除重复值,就可以删除重复数据了,如下图所示:


         




删除前后的对比如下图所示:


         




Excel的删除重复值默认针对所有值进行重复值判断,有订单编号、客户姓名、唯一识别码(类似于身份证号)、成交时间这四个字段,Excel会判断这四个字段是否都相等,只有都相等时才会删除,且保留第一个(行)值。


你知道了公司8月份成交明细以后,你想看一下8月份总共有多少成交客户,且每个客户在8月份首次成交的日期。


查看客户数量只需要按客户的唯一识别码进行去重就可以了。Excel默认是全选,我们可以取消全选,选择唯一识别码进行去重,这样重要唯一识别码重复就会被删除,如下图所示:


         




因为Excel默认会保留第一条记录,而我们又想要获取每个客户的较早成交日期,所以我们需要先对时间进行升序排列,让较早的时间排在前面,这样在删除的时候就会保留较早的成交日期了。

删除前后的对比如下图所示:


         




(2)Python实现


在Python中我们利用drop_duplicates()的方法,该方法默认对所有值进行重复值判断,且默认保留第一个(行)值。


         




上面的代码是针对所有字段进行的重复值判断,我们同样也可以只针对某一列或者某几列进行重复值删除的判断,只需要在drop_duplicates()方法中指明要判断的列名即可。


         




         




也可以利用多列去重,只需要把多个列名以列表的形式传给参数subset即可。比如按姓名和唯一识别码去重。


         




还可以自定义删除重复项时保留哪个,默认保留第一个,也可以设置保留最后一个,或者全部不保留。通过传入参数keep进行设置,参数keep默认值是first,即保留第一个值;也可以是last,保留最后一个值;还可以是False,即把重复值全部删除。


         




三、异常值的检测与处理

异常值就是相比正常数据而言过高或者过低的数据,比如一个人的年龄是0岁或者300岁都算是一个异常值,因为这和实际情况差距过大。


1、异常值检测


要处理异常值首先要检测,也就是发现异常值,发现异常值的方式主要有以下三种。


●根据业务经验划定不同指标的正常范围,超过该范围的值算作异常值。


●通过绘制箱型图,把大于(小于)箱型图上边缘(下边缘)的点称为异常值


●如果数据服从正态分布,则可以利用3σ原则;如果一个数值与平均值之间的偏差超过三倍标准差,那么我们就认为这个值是异常值。


箱型图如下图所示:

         




下图为正太分布图,我们把大于μ+3σ的值称为异常值。


         




2、异常值处理


对于异常值一般有以下几种处理方式:


●最常用的处理方式就是删除。

●把异常值当做缺失值处理。

●把异常值当做特殊情况,研究异常值出现的原因。


(1)Excel实现


在Excel中,删除异常值只要通过筛选把异常值对应的行找出来,然后单击鼠标右键选择删除即可。


对异常值进行填充,其实就是对异常值进行替换,同样通过筛选功能把异常值先找出来,然后把这些异常值替换成要填充的值即可。


(2)Python实现


在Python中,删除异常值用到的方法和Excel中的方法原理类似,在Python中是通过过滤的方法对异常值进行删除。比如df表中有年龄这个指标,要把年龄大于200的值删掉,你可以通过筛选把年龄不大于200的筛选出来,筛出来的部分就是删除大于200的值以后的新表。


对异常值进行填充,就是对异常值进行替换,利用replace()方法可以对特定的值进行替换。


四、数据类型转换

1、数据类型


(1)Excel实现


在Excel中常用的数据类型就是在菜单栏中数字选项下面的几种,你可以选择其他数据格式,如下图所示:


         




在Excel中只要选中某一列就可以在菜单栏看到这一列的数据类型。


当选中成交时间这一列的时候,菜单栏中就会显示日期,表示成交时间这一列的数据类型是日期格式,如下图所示:


         




(2)Python实现


Pandas不像Excel分的那么详细,它主要有6种数据类型,如下图所示:


         




在Python中,不仅可以用info()方法获取每一列的数据类型,还可以通过dtype方法来获取某一列的数据类型。


         




2、类型转换


我们在前面说过,不同数据类型的数据可以做的事情是不一样的,所以我们需要对数据进行类型转化,把数据转换为我们需要的类型。


(1)Excel实现


在Excel中如果想要改变某一列的数据类型,只要选中这一列,然后在数字菜单栏中通过下拉菜单选择你要转换的目标类型即可实现。


下图就是将文本类型的数据转换成数值类型的数据,数值类型的数据默认为两位小数,也可以设置成其他位数。


         




(2)Python实现


在Python中,我们利用astype()方法对数据类型进行转换,astype后面的括号里指明要转换的目标类型即可。


         




五、索引设置

索引是查找数据依据,设置索引的目的是便于我们查找数据。举个例子,你逛超市买了很多食材。

回到家以后要把他们放在冰箱里,放的过程其实就是一个建立索引的过程,比如蔬菜放在冷藏室里,肉类放在冷冻室里,这样找的时候就很快就可以找到了。


1、为无索引表添加索引


有的表没有索引,这时要给这类表加一个索引。


(1)Excel实现


在Excel中,一般都有索引的,如果没索引数据看起来会很乱,当然也会有例外,数据表就是没有索引的。这时候插入一行一列就是为表添加索引。


添加索引前后的对比如下图所示,序号列为行索引,字段名称为列索引。


         




(2)Python实现


在Python中,如果表没有索引,会默认用从0开始的自然数做索引,比如下面这样:


         




通过给表df的columns参数传入列索引值,index参数传入行索引值达到为无索引表添加索引的目的,具体实现如下:


         




         




2、重新设置索引


重新设置索引,一般指行索引的设置。有的表虽然有索引,但不是我们想要的索引,比如现在有一个表是把序号作为行索引,而我们想要吧订单编号作为行索引,该怎么实现呢?


(1)Excel实现


在Excel中重新设置行索引比较简单,你想让哪一列做行索引,直接把这一列拖到第一列的位置即可。


(2)Python实现


在Python中可以利用set_index()方法重新设置索引列,在set_index()里指明要用作行索引的列的名称即可。


         




在重新设置索引时,还可以给set_index()方法传入两个或者多个列名,我们把这种一个表中用哪个多列来做索引的方式称为层次化索引,层次化索引一般用在某一列中含有多个重复值的情况下。层次化索引的例子,如下所示,其中a、b、c、d分别有多个重复值。


         




3、重命名索引


重命名索引是针对现有的索引名进行修改的,就是改字段名。


(1)Excel实现


在Excel中重命名索引比较简单,就是直接修改字段名。


(2)Python实现


在Python中重命名索引,我们利用的是rename()方法,在rename后的括号里指明要修改的行索引及列索引名。


         




4、重置索引


重置索引主要用在层次化索引表中,重置索引是将索引列当做一个columns进行返回。


在下图左侧的表中,Z1,Z2是一个层次化索引,经过重置索引以后,Z1、Z2这两个索引以columns的形式返回,变为常规的两列。


         




在Excel中,我们要进行这种转换,直接通过复制、粘贴、删除等功能就可以实现,比较简单。我们主要讲一下在Python中怎么实现。


在Python利用的是reset_index()方法,reset_index()方法常用的参数如下:


         




level参数用来指定要将层次化索引的第几级别转化为columns,第一个索引为0级,第二个索引为1级,默认为全部索引,即默认吧索引全部转化为columns。


drop参数是用来指定是否将原索引删掉,即不作为一个新的columns,默认为False,即不删除原索引。


inplace参数用来指定是否修改原数据表。


         




reset_index()方法常用于数据分组、数据透视表中。


我正在学习《Python数据清洗可视化入门》,收获巨大哦,一起来学习吧!

Python数据清洗可视化入门

http://edu.cda.cn/course/2295

一、课程背景在数据分析的过程中,不论是什么样的数据,数据清洗绝对是绕不开的步骤,

因为我们在进行数据分...


使用道具

藤椅
CDA网校 学生认证  发表于 2020-4-2 11:15:18 |只看作者 |坛友微信交流群

在数据选择之前是要把所有的菜品都洗好并放在不同的容器里。现在要进行切配了,需要把这些菜品挑选出来,比如做一盘凉拌黄瓜,需要先把黄瓜找出来;要做一盘可乐鸡翅,需要先把鸡翅找出来。


数据分析也是同样的道理,你要分析什么,首先要把对应的数据筛选出来。


常规的数据选择主要有列选择、行选择、行列同时选择三种方式。


一、列选择

1、选择某一列/某几列


(1)Excel实现


在Excel中选择某一列直接用鼠标选中这一列即可;如果要同时选择多列,且待选择的列不是相邻的,这个时候就可以先选中其中一列,然后按住Ctrl键不放,再选择其他列。举个例子,同时选择客户姓名和成交时间这两列,如下图所示:



(2)Python实现


在Python中我们想要获取某列只需要在表df后面的方括号中指明要选择的列名即可。如果是一列,则只需要传入一个列名;如果是同时选择多列,则传入多个列名即可,多个列名用一个list存起来。




在Python中我们把这种通过传入列名选择数据的方法称为普通索引。


除了传入具体的列名,我们还可以传入具体列的位置,即第几列,对数据进行选取,通过传入位置来获取数据时需要用到iloc方法。



在上面的代码中,iloc后的方括号中逗号之前的部分表示要获取行的位置,只输入一个冒号,不输入任何数值表示获取所有的行;逗号之后的方括号表示要获取的列的位置,列德位置同样是也是从0开始计数。


我们把这种通过传入具体位置来选择数据的方式称为位置索引。


2、选择连续的某几列


(1)Excel实现


在Excel中,要选择连续的几列时,直接用鼠标选中这几列即可操作。当然了,你也可以先选择一列,然后按住Ctrl键再去选择其他列,由于要选取的列时连续的,因此没有必要这么麻烦。


(2)Python实现


在Python中可以通过前面介绍的普通索引个位置索引获取某一列或多列的数据。当你要获取的是连续的某几列,用普通索引和位置索引也是可以做到的,但是因为你要获取的列是连续的,所以只要传入这些连续列的位置区间即可,同样需要用到iloc方法。



在上面的代码中,iloc后的方括号中逗号之前的表示选择的行,当只传入一个冒号时,表示选择所有行;逗号后面表示要选择列的位置区间,0:3表示选择第1列到第4列之间的值(包含第1列单不包含第4列),我们把这种通过传入一个位置区间来获取数据的方式称为切片索引。


二、行选择

1、选择某一行/某几行


(1)Excel实现


在Excel中选择行与选择列的方式是一样的,先选择一行,按住Ctrl键再选择其他行。


(2)Python实现


在Python中,获取行的方式主要有两种,一种是普通索引,即传入具体行索引的名称,需要用到loc方法;另一种是位置索引,即传入具体的行数,需要用到iloc方法。


为了看的更清楚,我们对行索引进行自定义。



2、选择连续的某几行


(1)Excel实现


在Excel中选择连续的某几行与选择连续的某几列的方法一致,不在赘述。


(2)Python实现


在Python中,选择连续的某几行时,你同样可以把要选择的每一个行索引名字或者行索引的位置输进去。很显然这是没有必要的,只要把连续行的位置用一个区间表示,然后传给iloc即可。



3、选择满足条件的行


前面说到获取某一列时,获取的是这一列的所有行,我们还可只筛选出这一列中满足条件的值。


比如年龄这一列,需要把非异常值(大于200的属于异常值),即小于200岁的年龄筛选出来,该怎么实现呢?


(1)Excel实现


在Excel中我们直接使用筛选功能,将满足条件的值筛选出来,筛选方法如下图所示:



筛选年龄小于200的数据前后的对比如下图所示:。



(2)Python实现


在Python中,我们直接在表名后面指明哪列要满足什么条件,就可以把满足条件的数据筛选出来。



我们把上面这种通过传入一个判断条件来选择数据的方式称为布尔索引。


传入的条件也可以是多个,如下为选择的年龄小于200且唯一识别码小于102的数据。



三、行列同时选择

上面的数据选择都是针对单一的行或者列进行选择,实际业务中我们也会用到行、列同时选择,所谓的行、列同时选择就是选择出行和列的相交部分。


例如,我们要选择第二、三行和第二、三列相交部分的数据,下图中的阴影部分就是最终的选择结果。



行列同时选择在Excel中主要是通过鼠标拖拽实现的,与前面的单一行/列选择方法一致,此处不再赘述,接下来主要讲讲在Python中是如何实现的。


1、普通索引+普通索引选择指定的行和列


位置索引+位置索引是通过同时传入行、列索引的位置来获取数据,需要用到iloc方法。



loc方法中的第一对方括号表示行索引的选择,传入行索引的名称;loc方法中的第二对方括号表示列索引的选择,传入列索引的名称。


2、位置索引+位置索引选择指定行和列


位置索引+位置索引是通过同事传入行、列索引的位置来获取数据,需要用到iloc方法。



在iloc方法中的第一对方括号表示行索引的选择,传入要选择行索引的位置;第二对方括号表示列索引的选择,传入要选择列索引的位置。行和列索引的位置都是从0开始计数的。


3、布尔索引+普通索引选择指定的行和列


布尔索引+普通索引是先对表进行布尔索引选择行,然后通过普通索引选择列。



上面的代码表示选择年龄小于200的订单编号和年龄,先通过布尔索引选择出年龄小于200的所有行,然后通过普通索引选择订单编号和年龄这两列。


4、切片索引+切片索引选择指定的行和列


切片索引+切片索引是通过同时传入行、列索引的位置区间进行数据选择。



5、切片索引+普通索引选择指定的行和列


前面我们说过,如果是普通索引,就直接传入行或者列名,用loc方法即可;如果是切片索引,也就是传入行或者列的位置区间,要用iloc方法。如果是切片索引+普通索引,也就是行(列)用切片索引,列(行)用普通索引,这种交叉索引要用ix方法。




使用道具

板凳
sunlinxmu 发表于 2020-4-2 11:29:28 |只看作者 |坛友微信交流群
很实用,点个赞

使用道具

报纸
haizeiwanglufei 发表于 2020-4-2 15:47:53 来自手机 |只看作者 |坛友微信交流群
总结不错

使用道具

地板
yunnandlg 在职认证  学生认证  发表于 2020-4-3 11:27:44 |只看作者 |坛友微信交流群
Every obstacle is an opportunity.
每个挫折都是一次机会。

使用道具

7
oniking 发表于 2020-4-3 21:45:01 |只看作者 |坛友微信交流群
好东西,谢谢

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 20:03