pandas的简单使用-2-常用函数

Posted 南风丶轻语

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas的简单使用-2-常用函数相关的知识,希望对你有一定的参考价值。

pandas的简单使用-2-常用函数

记录一下潘大师的常用的函数和实现的功能

常用函数

查看头N行数据

df.head()  # 查看前5行数据
df.head(10)  # 查看前10行数据

查看尾N行数据

df.tail()  # 查看后5行数据
df.tail(10)  # 查看后10行数据

查看索引

df.index  # 查看索引

查看列名

df.columns  # 查看列名
df.keys()  # 查看列名
# keys() 等同于 columns

按照X轴和Y轴排序

df.sort_index(axis=\'index\', ascending=True)  # 按照X轴升序排序
df.sort_index(axis=\'index\', ascending=False)  # 按照X轴降序排序
df.sort_index(axis=\'columns\', ascending=True)  # 按照Y轴升序排序
df.sort_index(axis=\'columns\', ascending=False)  # 按照Y轴降序排序

按照X轴排序,即按照索引排序

按照Y轴排序,即按照列名排序

上述几个函数参考代码

import pandas as pd
from pandas import DataFrame


def see_data(df):
    data = df.head()  # 查看前5行数据
    print(data)
    print("*" * 50)
    data = df.head(10)  # 查看前10行数据
    print(data)
    print("*" * 50)
    data = df.tail()  # 查看后5行数据
    print(data)
    print("*" * 50)
    data = df.tail(10)  # 查看后10行数据
    print(data)
    print("*" * 50)


def see_index_columns(df: DataFrame):
    index = df.index  # 查看索引
    print(index)
    columns = df.columns  # 查看列名
    print(columns)
    keys = df.keys()  # 查看列名
    print(keys)
    print(df.columns is df.keys())  # keys() 等同于 columns


def sort_by_index(df: DataFrame):
    # axis : 0 or \'index\', 1 or \'columns\', default 0
    print(df)
    print("*" * 50)
    ret = df.sort_index(axis=\'index\', ascending=True)  # 按照X轴升序排序
    print(ret)
    print("*" * 50)
    ret = df.sort_index(axis=\'index\', ascending=False)  # 按照X轴降序排序
    print(ret)


def sort_by_columns(df: DataFrame):
    # axis : 0 or \'index\', 1 or \'columns\', default 0
    print(df)
    print("*" * 50)
    ret = df.sort_index(axis=\'columns\', ascending=True)  # 按照Y轴升序排序
    print(ret)
    print("*" * 50)
    ret = df.sort_index(axis=\'columns\', ascending=False)  # 按照Y轴降序排序
    print(ret)


def main():
    df: DataFrame = pd.read_csv("csvs/Src-Affairs.csv")  # 返回DataFrame二维数组对象
    # see_data(df)

    # see_index_columns(df)
    df2 = df[:5]
    # sort_by_index(df2)
    sort_by_columns(df2)


if __name__ == \'__main__\':
    main()

选择某一行

df.loc[RangeIndex(1)]  # 默认是RangeIndex类型的索引,所以可以这么选择第1行 但不会降维 不会从二维数组降到一维数组
df.loc[0]  # 默认是RangeIndex类型的索引,所以可以这么选择第1行 会降维 直接从二维数组降到一维数组
df.loc[RangeIndex(start=5, stop=6)]  # 默认是RangeIndex类型的索引,所以可以这么选择第5行 但不会降维 不会从二维数组降到一维数组
df.loc[5]  # 默认是RangeIndex类型的索引,所以可以这么选择第5行 会降维 直接从二维数组降到一维数组

选择某些行(切片)

df[1:3]  # 从第1行截取到第3行,不包括第3行, 和python的切片一致
df[1:]  # 从第1行截取到尾, 和python的切片一致
df[:5]  # 从头截取到第5行,不包括第5行, 和python的切片一致
df[:]  # 截取所有数据, 和python的切片一致

选择某一列

df[\'gender\']  # 类似字典形式选择某列
df.gender  # 类似属性形式选择某列
# df[\'gender\']等效于df.gender

选择某些列

df.loc[:, [\'affairs\', \'gender\', \'education\']]  # loc[:,] 形式 冒号表示所有行

同时选择某些行某些列

df.loc[[1, 2, 4], [\'affairs\', \'gender\']]
df.loc[1:5, [\'affairs\',  \'education\']]
df.loc[:, [\'affairs\', \'gender\', \'education\']]
df.loc[6:, [\'affairs\', \'gender\', \'education\']]
df.loc[:5, [\'affairs\', \'gender\', \'education\']]

备注:

①公式

【,】逗号前面是选择的行,行可以是切片,可以是列表。后面是选择的列,列可以是列表

②loc可以使用iloc代替,唯一不同的是iloc传递的参数是位置下标

df.iloc[[1, 2, 4], [1, 2, 3]]
df.iloc[1:5, 2:]
df.iloc[:, :5]
df.iloc[6:, 2:5]
df.iloc[:5, :]

获取某个位置的值

df.at[1, \'gender\']  # 获取第1行, 第gender列的值
df.at[5, \'education\']  # 获取第5行, 第education列的值
df.iat[5, 3]  # 获取第5行第3列的值
df.iat[3, 8]  # 获取第3行第8列的值

备注

①iat函数类似于iloc函数,都是需要传递下标

②at函数类似于loc函数,可以直接传递索引名和列名

上述几个函数参考代码

import pandas as pd
from pandas import DataFrame, RangeIndex


def choose_one_row(df: DataFrame):
    data = df.loc[RangeIndex(1)]  # 默认是RangeIndex类型的索引,所以可以这么选择第1行 但不会降维 不会从二维数组降到一维数组
    print(data)
    print("*" * 50)
    data = df.loc[0]  # 默认是RangeIndex类型的索引,所以可以这么选择第1行 会降维 直接从二维数组降到一维数组
    print(data)
    print("*" * 50)

    data = df.loc[RangeIndex(start=5, stop=6)]  # 默认是RangeIndex类型的索引,所以可以这么选择第5行 但不会降维 不会从二维数组降到一维数组
    print(data)
    print("*" * 50)
    data = df.loc[5]  # 默认是RangeIndex类型的索引,所以可以这么选择第5行 会降维 直接从二维数组降到一维数组
    print(data)
    print("*" * 50)


def choose_rows(df: DataFrame):
    print(df)
    print("*" * 50)
    data = df[1:3]  # 从第1行截取到第3行,不包括第3行, 和python的切片一致
    print(data)
    print("*" * 50)
    data = df[1:]  # 从第1行截取到尾, 和python的切片一致
    print(data)
    print("*" * 50)
    data = df[:5]  # 从头截取到第5行,不包括第5行, 和python的切片一致
    print(data)
    print("*" * 50)
    data = df[:]  # 截取所有数据, 和python的切片一致
    print(data)


def choose_one_column(df: DataFrame):
    gender = df[\'gender\']  # 类似字典形式选择某列
    print(gender)
    print("*" * 50)
    other = df.gender  # 类似属性形式选择某列
    print(other)
    print("*" * 50)
    print(gender is other)  # df[\'gender\']等效于df.gender


def choose_columns(df: DataFrame):
    print(df)
    print("*" * 50)
    data = df.loc[:, [\'affairs\', \'gender\', \'education\']]  # loc[:,] 形式 冒号表示所有行
    print(data)


def choose_rows_columns(df: DataFrame):
    print(df)
    print("*" * 50)
    data = df.loc[[1, 2, 4], [\'affairs\', \'gender\']]
    print(data)
    print("*" * 50)
    data = df.loc[1:5, [\'affairs\', \'education\']]
    print(data)
    print("*" * 50)
    data = df.loc[:, [\'affairs\', \'gender\', \'education\']]
    print(data)
    print("*" * 50)
    data = df.loc[6:, [\'affairs\', \'gender\', \'education\']]
    print(data)
    print("*" * 50)
    data = df.loc[:5, [\'affairs\', \'gender\', \'education\']]
    print(data)
    print("*" * 50)


def choose_rows_columns2(df: DataFrame):
    print(df)
    print("*" * 50)
    data = df.iloc[[1, 2, 4], [1, 2, 3]]
    print(data)
    print("*" * 50)
    data = df.iloc[1:5, 2:]
    print(data)
    print("*" * 50)
    data = df.iloc[:, :5]
    print(data)
    print("*" * 50)
    data = df.iloc[6:, 2:5]
    print(data)
    print("*" * 50)
    data = df.iloc[:5, :]
    print(data)
    print("*" * 50)


def choose_value(df: DataFrame):
    print(df)
    print("*" * 50)
    data = df.at[1, \'gender\']  # 获取第1行, 第gender列的值
    print(data)
    print("*" * 50)
    data = df.at[5, \'education\']  # 获取第5行, 第education列的值
    print(data)
    print("*" * 50)

    data = df.iat[5, 3]  # 获取第5行第3列的值
    print(data)
    print("*" * 50)
    data = df.iat[3, 8]  # 获取第3行第8列的值
    print(data)
    print("*" * 50)


def main():
    df: DataFrame = pd.read_csv("csvs/Src-Affairs.csv")  # 返回DataFrame二维数组对象
    # choose_one_column(df)
    df2 = df[:10]
    # choose_rows(df2)
    # choose_one_row(df2)
    # choose_columns(df2)
    # choose_rows_columns(df2)
    choose_value(df2)


if __name__ == \'__main__\':
    main()

github

Pandas中常用的函数使用

1、离散值的onehot编码

   pd.get_dummies()
import pandas as pd
#对于离散值不能进行编码的利用onehot编码
df = pd.DataFrame([
    [green, M, 10.1, class1],
    [red, L, 13.5, class2],
    [blue, XL, 15.3, class1]])

df.columns = [color, size, prize, class label]

size_mapping = {
    XL: 3,
    L: 2,
    M: 1}
df[size] = df[size].map(size_mapping)

class_mapping = {label: idx for idx, label in enumerate(set(df[class label]))}
df[class label] = df[class label].map(class_mapping)
print(----------------------------------------------------------------)

print(df)

print(----------------------------------------------------------------)
df = pd.get_dummies(df)
print(df)
print(----------------------------------------------------------------)

 

技术分享图片
2、DROP——删除pandas DataFrame的某一/几列

1. DF= DF.drop(‘column_name‘, 1);


2. DF.drop(‘column_name‘,axis=1, inplace=True)


3. DF.drop([DF.columns[[0,1, 3]]], axis=1,inplace=True)   # Note: zero indexed

凡是会对原数组作出修改并返回一个新数组的,往往都有一个 inplace可选参数。如果手动设定为True(默认为False),那么原数组直接就被替换。也就是说,采用inplace=True之后,原数组名(如2和3情况所示)对应的内存值直接改变;而采用inplace=False之后,原数组名对应的内存值并不改变,需要将新的结果赋给一个新的数组或者覆盖原数组的内存位置。

 

 

 




以上是关于pandas的简单使用-2-常用函数的主要内容,如果未能解决你的问题,请参考以下文章

python机器学习数据建模与分析——pandas中常用函数总结

pandas常用函数汇总

11.pandas里面的一些常用方法

精选22个Pandas实用函数

pandas一些常用函数以及操作的使用和理解(持续更新)

pandas常用函数