Python库-Pandas基础应用
前言
Pandas是属于Python的,主要用于数据分析的库。Pandas的应用十分广泛,不管是机器学习,还是大数据分析、数据挖掘,只要是涉及数据,Pandas的使用几乎是绕不开的。
而学习Python的小伙伴们应该都有所了解,Python应用最广泛的领域无非就是AI,数据处理这些,因此,学会处理数据的利器——Pandas就更是有必要了。
本篇文章主要涉及Pandas的最基础应用,主要目的在于帮助初学者解惑,并且帮助掌握一定程度的朋友做查询之用。因此,本篇文章会做到把各个点清晰分开,主要以提供相关操作所需的代码为主,少量个人见解为辅。
本文将主要讲解以下有关Pandas的点:
- Pandas基础操作
- 索引初阶操作
- Groupby操作
- 数值运算
基础操作
导入
import pandas as pd
导入Pandas,并以pd来指代它。
读取数据
Pandas可以从不同后缀名的文件中读取数据,但最常用的还是从csv文件中读取数据,以下是利用Pandas读取数据的代码。
df = pd.read_csv('./temps.csv')
这里要切记的就是pd.read_csv和文件后缀名的csv不可遗漏。该行代码的意思就是:将与本Python相同路径下的、名叫temps.csv的文件里的数据导入,储存到df中。
DataFrame基本信息
就像numpy有ndarray格式,pytorch有torch格式,DataFrame是属于Pandas的格式,这里暂时不需要理解它们究竟有什么区别,只需要知道要想执行Pandas的操作必须要用Pandas的格式。
数据显示
以下是导入后的DataFrame数据的格式
我们可以看到,导入的数据足足三百多行,我们肯定是不需要直接看完这多行数据的,因此将数据导进来后,可以选择只观看几行。
df.head(10)
该代码的意思是:只显示前十行的数据,不加参数时默认是5。
索引
df.index #返回行的索引
列名
df.columns #返回列名
全部基本信息
df.info()
这里可以看到df里数据的几乎一切基本信息,从之前的行数、列名、索引,包括之前没提到的一些信息也有,像数据类型等等。
也可以像下面这样
df.describe()
而里面的max,min这些数值,也可以使用df.max()等函数单独调出来。
一般默认是一列之中的数在一起比较,但可以通过指定axis的方式来改变。
转换为ndarray格式
df = df.values
经过这行代码后,df就不再是DataFrame格式,而是ndarray格式。
因为很多计算都是通过numpy来进行的,所以将导入的数据转换为ndarray格式是必不可少的一步。
DataFrame基本操作
创建DataFrame结构
创建DataFrame结构的方式有以下两种:
①
data = pd.DataFrame({'name':['Zhangsan','Lisi','Luowu'],'age':[34,32,28]})
②
data = [[1,2,3],[4,5,6]]
index = ['a','b']
columns = ['A','B','C']
df = pd.DataFrame(data=data,index=index,columns=columns)
创建DataFrame结构要用到pd.DataFrame函数。上面两种方法里,第一种是往函数里传入一个字典结构,字典的key会成为DataFrame结构的列名,value则会成为这一列上的数据。
而第二种方法则是分别设定好每一行的索引、每行的元素、列名。这里的索引不是数字,而是使用字符来代替。
Series结构
取出DataFrame的一列或一行,就是Series结构。
df_series = df['A']
这里的’A’是列名,会把’A’这一列的元素赋给变量df_series。Series结构具有DataFrame的功能。
如果想调出多个列得数据的话,可以执行以下操作:
df_series = df[['A','B']]
这里要注意的就是别漏了中括号。
运算操作
Pandas里的运算和numpy运算的用法并没有太大差别,它们同样都可以运用广播。
df = df + 1
df = df*2
df = df/2
以上操作都会同时作用到每一个元素。
索引
数字索引
DataFrame的索引一般为从0开始的数字,每一行从上往下索引不断增大。
想要通过索引调出某一行的数据,并不能直接输入索引数字,否则会报错。
想要通过数字索引调出数据的方法有以下两种:
- 利用切片
- 使用iloc
这里虽然显示得不一样,但它们储存的是同样的数据,而且格式也都是一样的。
字母索引
data = [[1,2,3],[4,5,6]]
index = ['a','b']
columns = ['A','B','C']
df = pd.DataFrame(data=data,index=index,columns=columns)
用该方法创建出来的df就是以字母为索引。但是字母索引并不能直接使用。
如果要使用字母索引,必须要使用loc。
df.loc['a']
修改索引
可以直接修改索引的名称
df.index = ['red','blue']
也可以直接把索引给全部换了
df_index = df.set_index('A')
这样的话‘A’列下的元素就会成为每一行的索引,使用df_index.loc[]的方法就可以调用每一行的数据。
groupby操作
groupby是将某一列中相同的元素进行分组,然后可以进行求和、求均值等操作。