pandas学习02

import pandas as pd
import numpy as np
df=pd.read_excel('./pandas中的数据分组与透视表/data.xlsx')
df
日期名称类别单价数量金额
02018-07-01商品A服装20240
12018-07-02商品B服装2003600
22018-07-03商品C食品120044800
32018-07-04商品A服装225110
42018-07-05商品B服装22061320
52018-07-06商品C食品100077000
62018-07-07商品A服装30390
72018-07-08商品A服装8001800
82018-07-09商品C食品130045200
92018-07-10商品B服装2303690
102018-07-11商品A服装28128
grouped=df.groupby('类别')
grouped
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000021B20F06888>
for name, data in grouped:
    print(name)
    print(data)
服装
           日期   名称  类别   单价  数量    金额
0  2018-07-01  商品A  服装   20   2    40
1  2018-07-02  商品B  服装  200   3   600
3  2018-07-04  商品A  服装   22   5   110
4  2018-07-05  商品B  服装  220   6  1320
6  2018-07-07  商品A  服装   30   3    90
7  2018-07-08  商品A  服装  800   1   800
9  2018-07-10  商品B  服装  230   3   690
10 2018-07-11  商品A  服装   28   1    28
食品
          日期   名称  类别    单价  数量    金额
2 2018-07-03  商品C  食品  1200   4  4800
5 2018-07-06  商品C  食品  1000   7  7000
8 2018-07-09  商品C  食品  1300   4  5200
grouped['数量','金额'].sum()
数量金额
类别
服装243678
食品1517000
grouped['单价'].max()
    
类别
服装     800
食品    1300
Name: 单价, dtype: int64
grouped=df.groupby(['类别','名称'])#通过类别名称分组
for i,k in grouped:
    print(i,k)
('服装', '商品A')            日期   名称  类别   单价  数量   金额
0  2018-07-01  商品A  服装   20   2   40
3  2018-07-04  商品A  服装   22   5  110
6  2018-07-07  商品A  服装   30   3   90
7  2018-07-08  商品A  服装  800   1  800
10 2018-07-11  商品A  服装   28   1   28
('服装', '商品B')           日期   名称  类别   单价  数量    金额
1 2018-07-02  商品B  服装  200   3   600
4 2018-07-05  商品B  服装  220   6  1320
9 2018-07-10  商品B  服装  230   3   690
('食品', '商品C')           日期   名称  类别    单价  数量    金额
2 2018-07-03  商品C  食品  1200   4  4800
5 2018-07-06  商品C  食品  1000   7  7000
8 2018-07-09  商品C  食品  1300   4  5200
grouped['单价'].max()
    
类别  名称 
服装  商品A     800
    商品B     230
食品  商品C    1300
Name: 单价, dtype: int64
grouped[['单价']].mean()
单价
类别名称
服装商品A180.000000
商品B216.666667
食品商品C1166.666667
grouped=df.groupby('类别')
for name, data in grouped:
    print(name)
    print(data['名称'].unique())
服装
['商品A' '商品B']
食品
['商品C']

time datetime

import time
time.time()#1970年1.1到现在调用的秒数 时间戳
1585909836.4156868
m=time.localtime(1585835029)
l=time.strftime('%Y--%m--%d %H:%M:%S',time.localtime(1585835029))#strptime str转化时间
time.mktime(m)
1585835029.0
from datetime import datetime
datetime.now()
datetime.datetime(2020, 4, 3, 18, 30, 36, 462421)
datetime.now().year
2020
m=datetime.now().strftime('%Y-%m-%d')
type(m)
str
l=datetime.strptime('2020-04-02','%Y-%m-%d')
datetime.fromtimestamp(1585835029.0)
datetime.datetime(2020, 4, 2, 21, 43, 49)
datetime.now().timestamp()
1585909836.51427
time.mktime(m)#str  m到现在的秒数
1585835029.0
datetime.now().timestamp()#到现在的时间戳
1585910834.269616
delta=datetime.now()-datetime(2018,5,21)
delta.days
683

pamdas 时间序列

pd.date_range('2020-3-1','2020-4-3')
DatetimeIndex(['2020-03-01', '2020-03-02', '2020-03-03', '2020-03-04',
               '2020-03-05', '2020-03-06', '2020-03-07', '2020-03-08',
               '2020-03-09', '2020-03-10', '2020-03-11', '2020-03-12',
               '2020-03-13', '2020-03-14', '2020-03-15', '2020-03-16',
               '2020-03-17', '2020-03-18', '2020-03-19', '2020-03-20',
               '2020-03-21', '2020-03-22', '2020-03-23', '2020-03-24',
               '2020-03-25', '2020-03-26', '2020-03-27', '2020-03-28',
               '2020-03-29', '2020-03-30', '2020-03-31', '2020-04-01',
               '2020-04-02', '2020-04-03'],
              dtype='datetime64[ns]', freq='D')
pd.date_range('2020-3-1','2020-4-3',freq='w')#D 天 w周 M月 Q季 H小时 T分 S秒
DatetimeIndex(['2020-03-01', '2020-03-08', '2020-03-15', '2020-03-22',
               '2020-03-29'],
              dtype='datetime64[ns]', freq='W-SUN')
pd.date_range('2020-3-1',freq='Q',periods=10)
DatetimeIndex(['2020-03-31', '2020-06-30', '2020-09-30', '2020-12-31',
               '2021-03-31', '2021-06-30', '2021-09-30', '2021-12-31',
               '2022-03-31', '2022-06-30'],
              dtype='datetime64[ns]', freq='Q-DEC')
 data={
     'time':pd.date_range('2019-1-1',freq='T',periods=200000),
     'cpu':np.random.randn(200000) + 10
     
 }
df=pd.DataFrame(data,columns= ['time','cpu'])
df
timecpu
02019-01-01 00:00:0010.608832
12019-01-01 00:01:0010.107891
22019-01-01 00:02:009.502407
32019-01-01 00:03:0010.453344
42019-01-01 00:04:0010.025292
.........
1999952019-05-19 21:15:009.354853
1999962019-05-19 21:16:0010.311234
1999972019-05-19 21:17:0010.764722
1999982019-05-19 21:18:0010.994048
1999992019-05-19 21:19:0010.775006

200000 rows × 2 columns

df.head()
timecpu
02019-01-01 00:00:0010.608832
12019-01-01 00:01:0010.107891
22019-01-01 00:02:009.502407
32019-01-01 00:03:0010.453344
42019-01-01 00:04:0010.025292
df.tail()
timecpu
1999952019-05-19 21:15:009.354853
1999962019-05-19 21:16:0010.311234
1999972019-05-19 21:17:0010.764722
1999982019-05-19 21:18:0010.994048
1999992019-05-19 21:19:0010.775006
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 200000 entries, 0 to 199999
Data columns (total 2 columns):
time    200000 non-null datetime64[ns]
cpu     200000 non-null float64
dtypes: datetime64[ns](1), float64(1)
memory usage: 3.1 MB
#查看1个小时内CPU占用情况 现在是一分钟采样 数据太多 改造dataframe 让时间作为索引 改造成五分钟一次时间作为索引 求五分钟平均值
s=pd.to_datetime(df.time)
df.index=s
df.head()
timecpu
time
2019-01-01 00:00:002019-01-01 00:00:0010.608832
2019-01-01 00:01:002019-01-01 00:01:0010.107891
2019-01-01 00:02:002019-01-01 00:02:009.502407
2019-01-01 00:03:002019-01-01 00:03:0010.453344
2019-01-01 00:04:002019-01-01 00:04:0010.025292
df.drop('time',axis=1)
cpu
time
2019-01-01 00:00:0010.608832
2019-01-01 00:01:0010.107891
2019-01-01 00:02:009.502407
2019-01-01 00:03:0010.453344
2019-01-01 00:04:0010.025292
......
2019-05-19 21:15:009.354853
2019-05-19 21:16:0010.311234
2019-05-19 21:17:0010.764722
2019-05-19 21:18:0010.994048
2019-05-19 21:19:0010.775006

200000 rows × 1 columns

df.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 200000 entries, 2019-01-01 00:00:00 to 2019-05-19 21:19:00
Data columns (total 2 columns):
time    200000 non-null datetime64[ns]
cpu     200000 non-null float64
dtypes: datetime64[ns](1), float64(1)
memory usage: 9.6 MB
df['2019-02-01 08:00:00':'2019-02-01 09:10:00']
timecpu
time
2019-02-01 08:00:002019-02-01 08:00:0010.016300
2019-02-01 08:01:002019-02-01 08:01:0011.500588
2019-02-01 08:02:002019-02-01 08:02:009.639299
2019-02-01 08:03:002019-02-01 08:03:009.365297
2019-02-01 08:04:002019-02-01 08:04:009.016025
.........
2019-02-01 09:06:002019-02-01 09:06:0010.236108
2019-02-01 09:07:002019-02-01 09:07:0010.644256
2019-02-01 09:08:002019-02-01 09:08:0010.251236
2019-02-01 09:09:002019-02-01 09:09:0010.343902
2019-02-01 09:10:002019-02-01 09:10:0011.026916

71 rows × 2 columns

df['2019-01-01']
timecpu
time
2019-01-01 00:00:002019-01-01 00:00:0010.608832
2019-01-01 00:01:002019-01-01 00:01:0010.107891
2019-01-01 00:02:002019-01-01 00:02:009.502407
2019-01-01 00:03:002019-01-01 00:03:0010.453344
2019-01-01 00:04:002019-01-01 00:04:0010.025292
.........
2019-01-01 23:55:002019-01-01 23:55:009.533162
2019-01-01 23:56:002019-01-01 23:56:0010.536986
2019-01-01 23:57:002019-01-01 23:57:0011.243809
2019-01-01 23:58:002019-01-01 23:58:008.733646
2019-01-01 23:59:002019-01-01 23:59:009.542733

1440 rows × 2 columns

df.groupby(df.index.date).mean()#每一天
cpu
2019-01-019.957422
2019-01-029.935621
2019-01-0310.005468
2019-01-049.992855
2019-01-059.995959
......
2019-05-1510.031266
2019-05-169.973673
2019-05-1710.045151
2019-05-1810.023991
2019-05-199.994609

139 rows × 1 columns

df.groupby(df.index.hour).mean()
cpu
time
010.007654
19.992322
29.987562
39.987208
410.008922
510.022125
69.978566
79.997908
810.012145
99.987106
109.988722
119.990424
1210.002575
1310.002844
1410.001017
1510.006581
169.993640
1710.015496
1810.001964
199.995674
209.972376
219.998824
2210.000342
239.998308
df.groupby(df.index.week).mean()
cpu
time
19.977973
29.997662
39.998770
49.994222
59.999088
69.997922
79.995254
810.010069
910.004777
1010.007423
1110.001689
1210.001328
139.999866
149.997371
159.995390
1610.003722
179.991836
189.988586
199.979943
2010.013066
df.resample('5T').mean()#重新采样
cpu
time
2019-01-01 00:00:0010.139553
2019-01-01 00:05:009.544466
2019-01-01 00:10:0010.198618
2019-01-01 00:15:0010.135603
2019-01-01 00:20:009.613786
......
2019-05-19 20:55:0010.348141
2019-05-19 21:00:0010.104422
2019-05-19 21:05:009.483435
2019-05-19 21:10:009.783999
2019-05-19 21:15:0010.439973

40000 rows × 1 columns

df.groupby(df.index.date)
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000021B265E5748>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值