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’)是一种,不同的版本,不同的电脑不一样,当你检查代码还是报错的话,就搜索那个错误就可以找到不少解决方法。
有啥问题欢迎童鞋们留言!