Pandas基本操作【持续更新······】

Pandas库的简介

    Pandas 是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas 基于 NumPy 开发,可以与其它第三方科学计算支持库完美集成。
     Pandas 的主要数据结构是 Series(一维数据)与DataFrame(二维数据)。

Pandas库的亮点

  1. 处理浮点与非浮点数据里的缺失数据,表示为 NaN;
  2. 大小可变:插入或删除 DataFrame 等多维对象的列;
  3. 自动、显式数据对齐:显式地将对象与一组标签对齐,也可以忽略标签,在 Series、DataFrame 计算时自动与数据对齐;
  4. 强大、灵活的分组(group by)功能:拆分-应用-组合数据集,聚合、转换数据;
  5. 把 Python 和 NumPy 数据结构里不规则、不同索引的数据轻松地转换为DataFrame 对象;
  6. 基于智能标签,对大型数据集进行切片、花式索引、子集分解等操作;
  7. 直观地合并(merge)、连接(join)数据集;
  8. 灵活地重塑(reshape)、透视(pivot)数据集;
  9. 轴支持结构化标签:一个刻度支持多个标签;
  10. 成熟的 IO 工具:读取文本文件(CSV 等支持分隔符的文件)、Excel文件、数据库等来源的数据,利用超快的 HDF5 格式保存 / 加载数据;
  11. 时间序列:支持日期范围生成、频率转换、移动窗口统计、移动窗口线性回归、日期位移等时间序列功能。

Pandas实践入门

import pandas as pd
import numpy as np
1. pd.Series / pd.DataFrame

用值列表生成pd.Series时,可自动生成整数索引:

import numpy as np
import pandas as pd
s = pd.Series([1, 3, 5, np.nan, 6, 8])
s

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

用 Series 字典对象生成 DataFrame:

df = pd.DataFrame({'A': 1.,
                   'B': pd.Series(1, index=list(range(4)), dtype='float32'),
                   'C': np.array([3] * 4, dtype='int32'),
                   'D': pd.Categorical(["test", "train", "test", "train"]),
                   'E': 'foo'})

在这里插入图片描述
查看DataFrame每一列的数据类型

df.dtypes

A     float64
B     float32
C       int32
D    category
E      object
dtype: object
2. pd.head(int) / pd.tail(int) / pd.index / pd.columns

查看Series、DataFrame数据结构的头部 int 个数据、尾部 int 个数据;
pd.index、pd.columns用于显示索引与列名

3. pd.Categorical()

该函数实际上是计算一个列表型数据中的类别数,即不重复项,它返回的是一个CategoricalDtype 类型的对象,相当于在原来数据上附加上类别信息。

df1 = pd.Series([0,1,2,1,4])
s = pd.Categorical(df1)
print(s)
s.dtype

[0, 1, 2, 1, 4]
Categories (4, int64): [0, 1, 2, 4]
CategoricalDtype(categories=[0, 1, 2, 4], ordered=False)

该函数还具有两个属性 codes 和 categories ,那么在实际应用中可以结合 codes 属性来一起使用,即pd.Categorical( list ).codes ,这样就可以直接得到原始数据的对应的序号列表,通过这样的处理可以将类别信息转化成数值信息 ,以至于可以应用到模型中。

s.codes
array([0, 1, 2, 1, 3], dtype=int8)

s.categories
Int64Index([0, 1, 2, 4], dtype='int64')
4. pd.read_csv(filepath_or_buffer,sep=’ , ’ )
#将csv文件读入并转化为DataFrame格式,
#该函数有很多默认参数,之后用到再补充
filepath_or_buffer —  文件所在处的路径
sep —  指定分割符,默认是’,’
5. pd.loc() / 5. pd.iloc()
# loc通过行和列的名字获取对应值
# iloc通过下标获取对应值
t1 = pd.DataFrame(np.arange(12).reshape(3, 4), index=list([1,2,3]), columns=list('abcd'))
print(t1)
 
   a  b   c   d
1  0  1   2   3
2  4  5   6   7
3  8  9  10  11

# loc和iloc, [,]逗号左右代表行和列,可是是某个值,也可以是切片

# loc
d1 = t1.loc[1, 'd']
d = t1.loc[ : , 'd']  # 可以切片
print(d1)
3

print(d)
1     3
2     7
3    11
Name: d, dtype: int32

# iloc
ia = t1.iloc[ 1: , 1:3]
ib = t1.iloc[[0,2], :]
print(ia)
   b   c
2  5   6
3  9  10

print(ib)
   a  b   c   d
1  0  1   2   3
3  8  9  10  11
6. pd.concat(objs,axis=0, join=‘outer’, join_axes=None)
# 将数据根据不同的轴作简单的融合连接
objs — 需要连接的对象,eg:[df1, df2]
axis —  axis = 0, 表示在水平方向(row)进行连接;axis = 1, 表示在垂直方向(column)进行连接
join — outer, 表示index全部需要; inner, 表示只取index重合的部分
join_axes — 传入需要保留的index
#其他有默认值的参数不常用,之后用到再补充。
7. pd.get_dummies(data, prefix=None, prefix_sep=’_’, dummy_na=False, columns=None, sparse=False, drop_first=False)
# 将类别变量(即离散特征)转换成新增的虚拟变量/指示变量。

#离散特征的编码分为两种情况:
1、离散特征的取值之间没有大小的意义,比如color:[red,blue], 那么就使用one-hot编码
2、离散特征的取值有大小的意义,比如size:[X,XL,XXL], 那么就使用数值的映射{X:1,XL:2,XXL:3}

data — 输入的数据 (array-like, Series, or DataFrame)
prefix — get_dummies — 转换后,列名的前缀 (string, list of strings, or dict of strings)
columns — 指定需要实现类别转换的列名 (list-like, default None)
dummy_na — bool, 增加一列表示空缺值,如果False就忽略空缺值
drop_first — bool, 获得k中的k-1个类别值,去除第一个

df =pd.DataFrame({'A': 1.,
                   'B': pd.Series(1, index=list(range(4)), dtype='float32'),
                   'C': np.array([3] * 4, dtype='int32'),
                   'D': pd.Categorical(["test", "train", "test", "train"]),
                   'E': 'foo'})
df = pd.get_dummies(df, prefix = 'pre', prefix_sep='~', columns=['D','E'])
df

	A	B	C	pre~test	pre~train	pre~foo
0	1.0	1.0	3	1				0			1
1	1.0	1.0	3	0				1			1
2	1.0	1.0	3	1				0			1
3	1.0	1.0	3	0				1			1
8. pd.DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
# 将数据根据不同的方法和轴填充缺失数据(NaN)
value — 被填充的数据,scalar、dict、Series、DataFrame
method — backfill、bfill、pad、ffill
axis — 0-index,1-columns修改填充方向
inplace	— default False,if True means 修改原文件
limit — 限制填充个数
9. pd.DataFrame.values
# 返回将DataFrame数据去掉index、colunms之后的array
df.values
array([[1., 1., 3., 1., 0., 1.],
       [1., 1., 3., 0., 1., 1.],
       [1., 1., 3., 1., 0., 1.],
       [1., 1., 3., 0., 1., 1.]])

欢迎关注【OAOA

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值