pandas——描述性统计方法和时间类型

1.pandas描述性统计方法

pandas提供了更加便利的方法来计算均值 ,如 detail['amounts'].mean()
 pandas还提供了一个方法叫作 describe,能够一次性得出数据框所有数值型特征的非空值数目、均值、
四分位数、标准差。detail[['counts','amounts']].describe()

方法名称 说明 方法名称 说明
min 最小值 max 最大值
mean 均值 ptp 极差
median 中位数 std 标准差
var 方差 cov 协方差
sem 标准误差 mode 众数
skem 样本偏度 kurt 样本蜂度
quantile 四分位数 count 非空值数目
describe 描述统计 mad 平均绝对离差
import pandas as pd

###加载数据
detail = pd.read_excel('./meal_order_detail.xlsx')
print('detail', detail)
### 查看df的属性-----数据类型
print('detail的数据类型', detail.dtypes)

###pandas中的统计分析

## max min var mean  std ptp(极差)  count(非空数目总数) mode(众数)

# 以amounts为例
print("amounts的最大值", detail['amounts'].max())
print("amounts的最小值", detail['amounts'].min())
print("amounts的方差", detail['amounts'].var())
print("amounts的标准差", detail['amounts'].std())
print("amounts的极差", detail['amounts'].ptp())
print("amounts的非空数目", detail['amounts'].count())
print("amounts的众数", detail['amounts'].mode())

##describe()
##amounts----->int64  数值型

###返回8种结果
# count mean std min 分位数  max
print("amounts的describe统计指标:", detail['amounts'].describe())

describe统计指标输出结果:

pandas——描述性统计方法和时间类型_第1张图片

2.类别型特征的描述性统计

描述类别型特征的分布状况,可以使用频数统计表。pandas库中实现频数统计的方法为value_counts。
pandas提供了categories类,可以使用astype方法将目标特征的数据类型转换为category类别。

describe方法除了支持传统数值型以外,还能够支持对category类型的数据进行描述性统计,四个统计
量分别为列非空元素的数目,类别的数目,数目最多的类别,数目最多类别的数目。

import pandas as pd

detail = pd.read_excel('./meal_order_detail.xlsx')



print("dishes_name的describe统计指标:",detail['dishes_name'].describe())

###对于数值型数据进行统计众数,众数的次数--->简单的统计分析实现不了
#1.先将数值型转化为类别型,然后用describe()进行统计分析

###df的数据类型可以通过astype进行类型转换
detail['amounts'] = detail['amounts'].astype('category')
print("detail的数据类型",detail.dtypes)

###再进行describet统计分析
print("转化后的统计指标:",detail['amounts'].describe())

转化后的统计指标输出结果为:

pandas——描述性统计方法和时间类型_第2张图片

3.时间类型

在多数情况下,对时间类型数据进行分析的前提就是将原本为字符串的时间转换为标准时间类型
pandas继承了NumPy库和datetime库的时间相关模块,提供了6种时间相关的类。

类名称 说明
Timestamp 最基础的时间类。表示某个时间点。在绝大多数的场景中的时间数据都是
Timestamp形式的时间
Period 表示单个时间跨度,或者某个时间段,例如某一天,某一小时等。
Timedelta 表示不同单位的时间,例如1天,1.5小时,3分钟,4秒等,而非具体的某个时间段。
DatetimeIndex 一组Timestamp构成的Index,可以用来作为Series或者DataFrame的索引
PeriondtimeIndex 一组Period构成的Index,可以用来作为Series或者DataFrame的索引
TimedeltaIndex 一组Timedelta构成的Index,可以用来作为Series或者DataFrame的索引。
####pandas  默认支持的时间点的类型为:Tiemstamp0
#           默认支持的时间序列类型为:DatetimeIndex

###numpy 里面默认支持datetime64[ns] 类型
##pandas 是封装numpy

import pandas as pd

### 加载数据
detail = pd.read_excel('./meal_order_detail.xlsx')
print('detail',detail)

####拿出时间数据---place_order_time
date = detail['place_order_time']

### 将普通时间序列 转化为pands默认支持的时间序列
detail['place_order_time'] = pd.to_datetime(date)
print(detail.dtypes)

detail['place_order_time'] = pd.DataFrame(date)
print(detail.dtypes)

se = pd.Series(['2019-6-19','2019-6-20'])
print(se)

se = pd.to_datetime(['2019-6-19','2019-6-20'])
print('se的时间类型',type(se))


####时间序列的操作
##获取年数据
year = [i.year for i in detail['place_order_time']]
print(year)

##月
month = [i.month for i in detail['place_order_time']]
print(month)

##日
day = [i.day for i in detail['place_order_time']]
print(day)


###hour  minute second


##weekday_name----h、获取轴几
weekday = [i.weekday_name for i in detail['place_order_time']]
print(weekday)


###获取季度
quarter = [i.quarter for i in detail['place_order_time']]
print(quarter)

###获取闰年
leap_year = [i.is_leap_year for i in detail['place_order_time']]
print(leap_year)


###时间相加相减
detail['hh'] = detail['place_order_time']+pd.Timedelta(days=1)
print(detail[['place_order_time','hh']])

### 计算2019-06-10 距离现在多长时间
time = pd.to_datetime('2019-06-19')-pd.to_datetime('2019-06-10')
print(time)


###计算机最早时间和最晚时间
print("min:",pd.Timestamp.min)
print("max:",pd.Timestamp.max)






pandas——描述性统计方法和时间类型_第3张图片

你可能感兴趣的:(pandas——描述性统计方法和时间类型)