python数据分析2

python数据分析pandas库


前言

为啥要用python中的pandas库进行数据分析,用excel不可以吗?不可以,excel处理上万条数据时通常会死机或者出错,python不会有这种问题。相信鲤鱼学长,在学习乃至日后工作中,pandas库将会风靡相当长一段时间。


提示:以下是本篇文章正文内容,下面案例可供参考

1.3.2获取行子集

获取行子集的方法说明
loc根据索引标签获取行子集
iloc根据行索引获取行子集

1.通过索引标签获取行子集

咱先康康数据集·的前5行

import pandas as pd
df=pd.read_csv(r'C:\Users\WLY\Desktop\python数据分析\pandas_for_everyone-master\data\gapminder.tsv',sep='\t')
print(df.head())

结果如下:

       country continent  year  lifeExp       pop   gdpPercap
0  Afghanistan      Asia  1952   28.801   8425333  779.445314
1  Afghanistan      Asia  1957   30.332   9240934  820.853030
2  Afghanistan      Asia  1962   31.997  10267083  853.100710
3  Afghanistan      Asia  1967   34.020  11537966  836.197138
4  Afghanistan      Asia  1972   36.088  13079460  739.981106

这里面左侧的0-4就是行号,也就是DataFrame的索引标签。可以使用DataFrame的loc属性通过索引标签获取行子集。代码如下:

#获取第一行,这里写0是因为python从0开始计数,标号0也就是第一行
print(df.loc[0])
#同理,取第100行就写99
print(df.loc[99])

结果如下:

country      Afghanistan
continent           Asia
year                1952
lifeExp           28.801
pop              8425333
gdpPercap        779.445
Name: 0, dtype: object
country      Bangladesh
continent          Asia
year               1967
lifeExp          43.453
pop            62821884
gdpPercap       721.186
Name: 99, dtype: object

当然,也可以同时选取多行数据。代码如下:

print(df.loc[[0,9,99]])

注意这里用到了嵌套方括号。
结果如下:

        country continent  year  lifeExp       pop   gdpPercap
0   Afghanistan      Asia  1952   28.801   8425333  779.445314
9   Afghanistan      Asia  1997   41.763  22227415  635.341351
99   Bangladesh      Asia  1967   43.453  62821884  721.186086

1.3.3混合

1.根据行值、列值来获取

1.3.2里是根据第x行、第x列来获取想要的数据,这里是根据行值、列值来获取,例如想要获取值是year和pop这两列:

import pandas as pd
df=pd.read_csv(r'C:\Users\WLY\Desktop\python数据分析\pandas_for_everyone-master\data\gapminder.tsv',sep='\t')
subset=df.loc[:,['year','pop']]
print(subset.head())

结果如下:

   year       pop
0  1952   8425333
1  1957   9240934
2  1962  10267083
3  1967  11537966
4  1972  13079460

可以使用loc来获取指定某行某列的数据,如获取第42行,列值是country的数据,代码如下:

print(df.loc[42,'country'])

结果如下:

Angola

2.通过范围获取

例如想要获取0、1、2、3、4列,代码如下:

small_range=list(range(5))
print(small_range)
subset=df.iloc[:,small_range]
print(subset.head())

结果如下:

[0, 1, 2, 3, 4]
       country continent  year  lifeExp       pop
0  Afghanistan      Asia  1952   28.801   8425333
1  Afghanistan      Asia  1957   30.332   9240934
2  Afghanistan      Asia  1962   31.997  10267083
3  Afghanistan      Asia  1967   34.020  11537966
4  Afghanistan      Asia  1972   36.088  13079460

这里用到range函数生成0-4这五个整数。
若是获取3-6列呢?就只需要将上述代码中的range(5)改成range(3-7)就可以了。
其实用range函数解决有点笨,用到切片语法更好。代码如下:

subset=df.iloc[:,:5]
print(subset.head())

结果是一样的,其实这就是range方法的简写版。
下面大家对比康康:

#获取第3列到第5列,包含第3列和第5列,range函数方法
small_range=list(range(3,6))
subset=df.iloc[:,small_range]
print(subset.head())

#获取第3列到第5列,包含第3列和第5列,切片语法
subset=df.iloc[:,3:6]
print(subset.head())
#其实上面两行也可以这样
subset=df.iloc[:,3:6:1]
print(subset.head())
#这里的3:6:1,后面的1就是步长,隔1取一个数
subset=df.iloc[:,0:6:2]
print(subset.head())
#这样就是从取0-6的偶数(不包括6

留一个问题:如果用loc获取最后一行数据,代码如下:

print(df.loc[-1])

结果会报错,应该怎么解决?
我用的python版本是python3.7 64位,pycharm是2017.1 64位。大家根据自己的电脑来安装python和编译器。

注意:
1、这里也可以选择不把结果打印出来。
2、python里路径的写法,我这(r’xxx’)是一种,不同的版本,不同的电脑不一样,当你检查代码还是报错的话,就搜索那个错误就可以找到不少解决方法。


有啥问题欢迎童鞋们留言!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值