pandas系列总结(2)--- pandas基础功能(初步了解数据及函数)

延续总结(1):pandas系列总结(1) --- pandas数据结构

实际使用中,我常用的DataFrame数据类型,下面了解DataFrame基本功能,基本数据集

import pandas as pd
import numpy as np
index = pd.Index(['love','alice','peter','mars','mechel'],name='name')
data = {'age':[45,34,55,12,23],
        'city':['beijign','shanghai','hangzhou','tianjin','yunnan'],
        'gender':['male','female','male','female','male']}
df_age  = pd.DataFrame(data=data, index=index)
df_age['age_2'] = df_age.age + 3

一、数据基本情况

1.数据集基本信息

查看数据集整体大小类型信息
print(df_age.info()) #数据集大小类型
print(df_age.shape) #数据集行、列数
print(df_age.columns) #所有列名
print(df_age.values)  #所有数据
print(df_age.head(2)) #查看前两行
print(df_age.T)       #数据转置

输出: 12-3

2.基本描述性统计

1.整体的均值、最值、标准差、四分位数等的描述统计

print(df_age.describe()) #输出数值字段的四分位、最值、均值等描述性统计量,结果为DataFrame
print(df_age.describe(include=['object'])) #非数值字段的统计

2.当个字段的统计量

print(df_age.age.max()) #age字段的最大值
print(df_age.age.cumsum()) #age字段的累加求和
print(df_age.age_2.value_counts()) #每个值出现次数的统计
print(df_age.age.idxmax())  #最大值对应的索引
print(df_age.age.idxmin()) #最小值对应的索引
print(df_age.age_2.quantile(0.1)) #十分位数

 

二、数据排序

Pandas 支持两种排序方式:按轴(索引或列)排序和按实际值排序。要改变原始数据集,需要设置参数inplace=True

1.根据索引  sort_index

#排序
#根据索引
print(df_age.sort_index())  #默认按照索引进行排序
print(df_age.sort_index(axis=1,ascending=False))  #行排序

2.根据实际值 sort_values

#根据实际值
print(df_age.sort_values(by=['age','gender'])) #按照年龄、性别字段进行排序

三、数据离散化

简单的离散化话一般有等频分段,等距分段,python cut函数和qcut函数能够实现等距、等频分段。 

#离散化
print(pd.cut(df_age['age'],3)) #等距(宽)分段,分为3段
print(pd.qcut(df_age.age_2,3)) #等频(高)分段,分为3段

四、其他函数应用

我们可能需要自己定制一些函数,并将它应用到 DataFrame 或 Series。常用到的函数有:mapapplyapplymap

1.map 是 Series 中特有的方法,通过它可以对 Series 中的每个元素实现转换。

print(df_age.age.map(lambda x:'old' if x > 40 else 'young')) #根据年龄判断为青年还是老年

city_map = {
        "beijing": "north",
        "shanghai": "south",
        "hangzhou": "south",
        "yunnan": "south",
        "tianjin":"north"
}
print(df_age.city.map(city_map)) #根据城市判断南北方

输出:

2.apply 方法既支持 Series,也支持 DataFrame,在对 Series 操作时会作用到每个值上,在对 DataFrame 操作时会作用到所有行或所有列(通过 axis 参数控制,默认为列)。

#apply
# 对 Series 来说,apply 方法 与 map 方法区别不大。
print(df_age.age.apply(lambda x:'old' if x > 40 else 'young')) #根据年龄判断为青年还是老年

# 对 DataFrame 来说,apply 方法的作用对象是一行或一列数据(一个Series)默认一列
print(df_age.apply(lambda x: x.max(),axis=0))

3.applymap 方法针对于 DataFrame,它作用于 DataFrame 中的每个元素,它对 DataFrame 的效果类似于 apply 对 Series 的效果。

#applymap,针对DataFrame,作用于每个元素
print(df_age.applymap(lambda x: str(x).upper()))

猜你喜欢

转载自blog.csdn.net/u013344884/article/details/81744432