大数据,机器学习,人工智能机器学习与数据挖掘人工智能/模式识别/机器学习精华专题

pandas小结(超全)

2019-10-13  本文已影响0人  皮皮大

本篇博文主要是对之前的几篇关于pandas使用技巧的小结,内容包含:


创建数据

S型数据

import numpy as np
import pandas as pd

pd.Series([1, 3, 5, np.nan, 6, 89])  # 普通形式
pd.date_range('20190924', periods=6)  # 时间间隔形式

DF型数据

指定3个参数

pd.DataFrame(np.random.randn(6,4), index=dates, columns=list("ABCD"))

pd.DataFrame({'A': 1.,   #  某列的值相同
                    'B': pd.Timestamp('20130102'),  # 时间戳的创建
                    'C': pd.Series(1, index=list(range(4)), dtype='float32'),  # 某列值可以是S型数据
                    'D': np.array([3] * 4, dtype='int32'),  # 使用numpy数组
                    'E': pd.Categorical(["test", "train", "test", "train"]), # 不同的类
                    'F': 'foo'})  # 使用布尔值

选择数据

查看数据

df.loc[[......]]:可以使用数字索引,也可以使用标签索引,还可以用切片的形式

df.iloc[[.....]]:只能使用数字索引,可以是非连续或者连续(等差形式也OK)

布尔索引:df2[df2['E'].isin(['two', 'four'])]

同时指定行和列:

df.loc[:, ["A","B"]]

df.iloc[[1, 2, 4], [0, 2]]

缺失值处理

apply用法

# 求出每列的max 和 min
def f(x):    
    return pd.Series([x.min(), x.max()], index=["min", "max"])
df.apply(f)
f = lambda x: x.max() - x.min()
df.apply(f)# df.apply(f, axis="columns") 表示在行上执行

合并和连接

合并concat

连接merge

可根据⼀个或多个键将不同DataFrame中的⾏连接起来,它实现的就是数据库的join操作 ,就是数据库风格的合并

常用参数表格

参数 说明
left 参与合并的左侧DF
right 参与合并的右侧DF
how 默认是inner,inner、outer、right、left
on 用于连接的列名,默认是相同的列名
left_on \right_on 左侧、右侧DF中用作连接键的列
sort 根据连接键对合并后的数据进行排序,默认是T
suffixes 重复列名,直接指定后缀,用元组的形式('_left', '_right')
left_index、right_index 将左侧、右侧的行索引index作为连接键(用于index的合并)

分组

groupby

()

如何找出每一种职业的平均年龄?并按照平均年龄从大到小排序?

df.groupby("occupation").age.mean().sort_values(ascending=False)  # 默认是升序
# df.groupby(df["occupation"]).age.mean().sort_values(ascending=False)
# df.groupby(by="occupation").age.mean().sort_values(ascending=False)  by可以省略

# 按照职业分组,再对年龄求均值
df['age'].groupby(df['occupation']).mean()

避免层次化索引

重塑reshaping

image image

透视表

image

关于pivot_table函数结果的说明

上一篇下一篇

猜你喜欢

热点阅读