python学习笔记16(Pandas)

Pandas是一个开放源码的Python库,它使用强大的数据结构提供高性能的数据操作和分析工具。
Pandas的主要特点:
快速高效的DataFrame对象,具有默认和自定义的索引。将数据从不同文件格式加载到内存中的数据对象的工具。丢失数据的数据对齐和综合处理。重组和摆动日期集。基于标签的切片,索引和大数据集的子集。可以删除或插入来自数据结构的列。按数据分组进行聚合和转换。高性能合并和数据加入。时间序列功能。

DataFrame结构

类比于二维数组结构
DataFrame对象既有行索引,又有列索引
行索引,表明不同行,横向索引,叫index,0轴,axis=0
列索引,表名不同列,纵向索引,叫columns,1轴,axis=1
属性
对象.shape 形状
对象.index 行索引列表
对象.columns 列索引列表
对象.values array的值
对象.T 转置
对象.head() 默认显示前5行内容
对象.tail() 默认显示后5行内容

索引设置
1.修改行列索引
必须整行或者整列去进行修改
2.重设索引
对象.reset_index(drop=False)
设置新的下标索引
drop:默认为False,不删除原来索引,如果为True,删除原来的索引值
3.设置新索引
对象.set_index()
keys : 列索引名成或者列索引名称的列表
drop : boolean, default True.当做新的索引,删除原来的列
如果设置索引是两个的时候就是multiIndex

Series – 一维数组[**]
1.创建
通过pd.Series创建
指定索引创建
通过字典创建
2.属性
对象.index
对象.values

基本数据操作

1.索引操作
1.直接 – 先列后行
2.loc – 先行后列,索引值
3.iloc – 先行后列,索引值的下标
2.赋值操作
1.对象[""]
2.对象.close
在这里插入图片描述
3.排序
1.dataframe
对象.sort_values()
by – 按照什么排序
ascending – 升降序
对象.sort_index() 给索引进行排序
注意:by这个参数可以接受多个值,优先按照第一个索引排序,如果相同,按照后面的
2.series
对象.sort_values()
对象.sort_index()

DataFrame运算

算术运算
直接使用方法,如add、sub,也可以使用符号
逻辑运算
逻辑运算符号<、 >、|、 &
逻辑运算函数:
query(expr)
expr:查询字符串
示例:data.query(“p_change > 2 & turnover > 15”)
isin(values)
示例:data[data[‘turnover’].isin([4.19, 2.39])] 判断turnover是否为4.19,2.39
统计运算
data.describe() 计算平均值、标准差、最大值、最小值
统计函数:min(最小值), max(最大值), mean(平均值), median(中位数), var(方差), std(标准差),mode(众数)
累计统计函数
在这里插入图片描述
自定义运算
apply(func, axis=0)
func:自定义函数
axis=0:默认是列,axis=1为行进行运算
定义一个对列,最大值-最小值的函数
示例:data[[‘open’, ‘close’]].apply(lambda x: x.max() - x.min(), axis=0)

文件读取与存储

1.csv
1.读取–read_csv
pandas.read_csv(filepath_or_buffer, sep =’,’ )
filepath_or_buffer:文件路径
usecols:指定读取的列名,列表形式
2.存储 – 对象.to_csv
DataFrame.to_csv(path_or_buf=None, sep=’, ’, columns=None, header=True, index=True, mode=‘w’, encoding=None)
path_or_buf :string or file handle, default None
sep :character, default ‘,’
columns :sequence, optional
mode:‘w’:重写, ‘a’ 追加
index:是否写进行索引
header :boolean or list of string, default True,是否写进列索引值
2.hdf
1.读取 – pd.read_hdf()
HDF5文件的读取和存储需要指定一个键,值为要存储的DataFrame
pandas.read_hdf(path_or_buf,key =None,** kwargs)
从h5文件当中读取数据
path_or_buffer:文件路径
key:读取的键
return:Theselected object
DataFrame.to_hdf(path_or_buf, key, \kwargs)

2.写入 – 对象.to_hdf()
注意:保存文件是****.h5

缺失值处理

处理nan
判断数据是否为NaN:
pd.isnull(df),
pd.notnull(df)
处理方式:
存在缺失值nan,并且是np.nan:
1、删除存在缺失值的:dropna(axis=‘rows’)
注:不会修改原数据,需要接受返回值
2、替换缺失值:fillna(value, inplace=True)
value:替换成的值
inplace:True:会修改原数据,False:不替换修改原数据,生成新的对象
不是缺失值nan,有默认标记的,如:”?“
1、先替换‘?’为np.nan
df.replace(to_replace=, value=)
to_replace:替换前的值
value:替换后的值
2、在进行缺失值的处理dropna/fillna

数据离散化

连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。
连续属性的离散化就是在连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数值代表落在每个子区间中的属性值。
例如:
原始人的身高数据:165,174,160,180,159,163,192,184 假设按照身高分几个区间段:150~ 165, 165~ 180,180~195。
这样将数据分到了三个区间段,可以对应的标记为矮、中、高三个类别。
函数:
pd.qcut(data, bins):
对数据进行分组将数据分组 一般会与value_counts搭配使用,统计每组的个数
series.value_counts():统计分组次数

# 自行分组
qcut = pd.qcut(p_change, 10)
# 计算分到每个组数据个数
qcut.value_counts()

自定义区间分组:
pd.cut(data, bins)

# 自己指定分组区间
bins = [-100, -7, -5, -3, 0, 3, 5, 7, 100]
p_counts = pd.cut(p_change, bins)

one-hot编码
pandas.get_dummies(data, prefix=None)
data:array-like, Series, or DataFrame
prefix:分组名字

# 得出one-hot编码矩阵
dummies = pd.get_dummies(p_counts, prefix="rise")

合并

pd.concat实现数据合并
pd.concat([data1, data2], axis=1)
按照行或列进行合并,axis=0为列索引,axis=1为行索引
pd.merge(left, right, how=‘inner’, on=None, left_on=None, right_on=None)
可以指定按照两组数据的共同键值对合并或者左右各自
left: A DataFrame object
right: Another DataFrame object
on: Columns (names) to join on. Must be found in both the left and right DataFrame objects.
left_on=None, right_on=None:指定左右键
在这里插入图片描述
交叉表:交叉表用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系)
pd.crosstab(value1, value2)
DataFrame.pivot_table([], index=[])
分组API
DataFrame.groupby(key, as_index=False)
key:分组的列数据,可以多个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值