侧边栏壁纸
博主头像
乌拉队长博主等级

你只管努力,其余的交给命运

  • 累计撰写 125 篇文章
  • 累计创建 34 个标签
  • 累计收到 31 条评论

目 录CONTENT

文章目录

Pandas常用操作

乌拉队长
2021-07-27 / 0 评论 / 0 点赞 / 815 阅读 / 2,298 字

Pandas常用操作

  • 首先导入Pandas包和numpy包
import pandas as pd
import numpy as np
  • 读取csv文件
pd.read_csv(csv_path)
# 不读取列名
pd.read_csv(csv_path, header=None)
  • 获取列名(表头)
header = df.columns.values
  • 按索引取值
# 取第3列所有数据
data = df.iloc[:, 3]
  • 删除某列
# 删除列索引为0的列,labels可以是list列表,labels为list时,删除多列
# axis=1删除列,axis=0删除行
# inplace=True会直接在原数据上进行删除操作,删除后无法返回,inplace=False删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe,inplace默认为False
removedata = df.drop(labels=0, axis=1, inplace=True)

# 根据列名删除
removedata = df.drop(columns="id", axis=1, inplace=True)
  • 保存DataFrame数据到csv文件
# index=False表示不添加行索引(即行号),默认为True
# header=False表示不添加列索引(即表头),默认为True
df.to_csv(os.path.join("dataset", "train.csv"), index=False, header=False)
  • 求列表中的众数
# 下列代码执行输出 1
num = pd.Series(np.array([1,1,1,2,3,4,5])).mode()[0]
  • 画箱型图(查看数据分布及离群值)
    超出上限和下限的值为离群值
# 画price列的箱型图
df["price"].plot.box()
# 画出所有数据列的箱型图
df.plot.box()
  • 划分区间/属性分层
pandas.cut()函数 用来把一组数据分割成离散的区间。比如有一组年龄数据,可以使用pandas.cut将年龄数据分割成不同的年龄段并打上标签。

参数含义

x:被切分的类数组(array-like)数据,必须是1维的(不能用DataFrame);
bins:bins是被切割后的区间(或者叫“桶”、“箱”、“面元”),有3中形式:一个int型的标量、标量序列(数组)或者pandas.IntervalIndex 。

	一个int型的标量
	当bins为一个int型的标量时,代表将x平分成bins份。x的范围在每侧扩展0.1%,以包括x的最大值和最小值。
	标量序列
	标量序列定义了被分割后每一个bin的区间边缘,此时x没有扩展。
	pandas.IntervalIndex
	定义要使用的精确区间。

right:bool型参数,默认为True,表示是否包含区间右部。比如如果bins=[1,2,3],right=True,则区间为(1,2],(2,3];right=False,则区间为(1,2),(2,3)。

labels:给分割后的bins打标签,比如把年龄x分割成年龄段bins后,可以给年龄段打上诸如青年、中年的标签。labels的长度必须和划分后的区间长度相等,比如bins=[1,2,3],划分后有2个区间(1,2],(2,3],则labels的长度必须为2。如果指定labels=False,则返回x中的数据在第几个bin中(从0开始)。

retbins:bool型的参数,表示是否将分割后的bins返回,当bins为一个int型的标量时比较有用,这样可以得到划分后的区间,默认为False。

precision:保留区间小数点的位数,默认为3.

include_lowest:bool型的参数,表示区间的左边是开还是闭的,默认为false,也就是不包含区间左部(闭)。

duplicates:是否允许重复区间。有两种选择:raise:不允许,drop:允许。

返回值

out:一个pandas.Categorical, Series或者ndarray类型的值,代表分区后x中的每个值在哪个bin(区间)中,如果指定了labels,则返回对应的label。

bins:分隔后的区间,当指定retbins为True时返回。

举例

# 将item_price按照[0-1000,1000-2000,...,7000,-8000]区间划分为8个区间(分为8层)
bins_price = [i*1000 for i in range(9)]
df["price_bin"] = pd.cut(x=df["item_price"], bins=bins_price, labels=[i for i in range(1,9)])
  • 去除重复项

参数

keep : 设置保留哪个重复项, 可选值有{'first', 'last', ``False``},first表示保留重复项中第一次出现时的数据,last表示保留重复项中最后一次出现时的数据,False表示全部删除重复项, 默认first

inplace : 设置是否直接替换变量中的数据, True是表示直接替换变量中的数据,此时无返回值,否则需要用另一个变量接收返回值,默认False

举例

# 该代码表示保留重复项中第一次出现时的数据并直接替换变量中的数据,
# 此时无返回值,删除重复值后的数据直接保存在df变量中,
# 因此不需要用变量接收
df.drop_duplicates(keep="first", inplace=True)
0

评论区