pandas库就是python中用于数据挖掘的库。包含丰富的工具包。
要调用pandas库,使用以下代码,由于pandas库经常和numpy库配套使用,故还应该调用numpy库。
import pandas as pd
import numpy as np
数据结构
要学习pandas,首先要了解pandas的数据结构。pandas的数据结构主要有两种。
Series
类似于表中的一列(column)类似于一维数组,可以保存任何数据类型,由索引(index)和列组成。
创建
pd.Series( data, index, dtype, name, copy)
参数说明:
data:一个指向一组数据的指针(Ndarray类型)。
index:数据索引标签,如果不指定,默认从 0 开始,用一个Ndarray对象来指定。
dtype:数据类型,默认会自己判断。
name:设置名称。
copy:拷贝数据,默认为 False。
# 通过数组创建Series
s = pd.Series([6, 5, 2], index=['x', 'y', 'z'])
print(s)
x 6
y 5
z 2
除了通过数组外,在pd.Series函数中用放入字典参数,可以自动为数据指定索引值。
操作
print(SeriesObject["index"])
即根据索引来使用Series对象的数据。
排序
指定升降序
data.sort_values(ascending = True)
Dataframe
DataFrame 是一个表格型的数据结构,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典。
行索引就是表明不同行的索引,叫index,axis=0
列索引就是表明不同列的索引,叫columns,axis=1
创建
pd.DataFrame(data,index=[index],columns=[columns])
以上函数创建了一个数据为data,行索引为index,列索引为columns的DataFrame结构
dataframe方法
print(data.shape) #表示几行几列
print(data.index) #输出行索引
print(data.columns) #输出列索引
print(data.values) #输出Dataframes的值
print(data.T) #Dataframes转置
索引设置操作
1.索引设置
dataframe不支持单独修改某个索引,必须修改全部索引。
index_row2 = [一组数据]
data.index = index_row2
print(data)
2.重新设置索引
print(data.reset_index(drop=False))
以上函数会将索引重新设置为数值,并将原索引转变为正常的列。
3.以某列值为新的索引
set_index(keys,drop=True)
keys:列索引名称
drop:drop为真时抛弃原来索引这一列。
基本数据操作
1.索引重命名
rename(mapper=None,inplace=False)
mapper:实际编程时为columns或index,传入一个映射体,可以是字典或函数。
inplace:默认为False,不改变自身数据,返回一个新的dataframe
2.通过索引操作数据
- 直接使用索引(先列后行)
不支持区间访问(即[:]形式的访问) - 结合loc或iloc使用索引(先行后列)
print(data.loc['股票3']['2022-02-03']) #通过名称
print(data.iloc[1, 1]) #通过下标
print(data.iloc[:3, :4]) #区间访问
- 可以使用以上两个函数进行组合索引访问
例如:
print(data.loc[data.index[:5], ['2022-02-01', '2022-02-02']])
print(data.iloc[0:5, data.columns.get_indexer(['2022-02-01', '2022-02-02'])])
以上两个函数都截取了数据的5行和2列
排序
1.对内容进行排序
指定一个或多个关键字,并指定升或降序。关键字优先级从先到后依次减少。ascending=False为降序
print(data.sort_values(by='2022-02-01', ascending=False))
print(data.sort_values(by=['2022-02-01', '2022-02-02'], ascending=False))
2.对索引进行排序
只需指定升降序
print(data.sort_index(ascending=False))
运算
算术运算
和一般数据运算类似。对于DataFrame中的某个数据(用dat表示),我们可以采用以下方法进行算术运算。
dat.__add__(<num>) #加法
dat.__sub__(<num>) #减法
dat.__mul__(<num>) #乘法
dat.__divmod__(<num>) #得到商和余数
dat.__mod__(<num>) #求模
dat.__abs__() #求绝对值
逻辑运算
逻辑运算不仅可以返回运算结果,还可以将逻辑运算作为筛选条件进行数据筛选。
print(df)
print(df['sale'] > 50) #计算sale的各个数据>50的结果,返回一个Series结构。
print(df[df['sale'] > 50]) #筛选“sale“大于50的元组,返回一个DataFrame结构
逻辑运算函数
1.query函数
#query函数通过条件字符串进行查询符合条件的数据
data.query(expr)
以上代码根据条件字符串返回一个符合条件的DataFrame结构。条件字符串示例:'sale > 35 & sale < 80'表示sale这列在35至80之间。
2.isin函数
#isin函数对数据进行逻辑判断,判断数据是否在指定的values中
data[col].isin([数据])
以上代码返回一个Series结构,如果该行对应的数据符合条件,那么以该行行数为索引的数据值为True,反之为False。
统计运算
describe() 综合分析,统计数量count,平均值mean,标准差std,最大值,最小值等。
data.describe()
此外还有很多描述性统计函数,这里浅举几个例子。
count() #统计某个非空值的数量
sum() #求和
mean() #求均值
median() #求中位数
mode() #求众数
std() #求标准差
min() #求最小值
max() #求最大值
自定义运算
data.apply(func,axis)
func是自定义运算函数
axis是对行(列)运算