欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python数据科学(五):pandas基础—— 时间序列类别索引透视

程序员文章站 2022-06-06 08:05:06
...

索引

  • 与某个值比较a = s[s>0]

  • 复制后查找选择x = s.copy()

tag = [‘a’] + [‘b’] + [‘c’]
x[‘Tag’] = tag

y = x[x.Tag.isin([‘a’,‘b’])]

重新索引reindex

df.reindex(index=dates[0:4],columns=list(df.columns) + [‘e’])

索引转换

  • stack()
    stacked = df.stack()

  • unstack()
    转换回来
    reversestacked = stacked.unstack()
    在行索引有两层列索引有一层时,将行索引二层索引转换为列索引
    reversestacked = stacked.unstack().unstack()

数据透视 pivot_table

  • 不存在值——NaN
  • 多个值——求平均值
    pd.pivot_table(df, values=‘D’, index=[‘A’, ‘B’], columns=[‘C’])
    行索引为AB 列索引为C

时间序列

创建

date_range

rng = pd.date_range(‘20200210’, periods=600, freq=‘s’)

period_range

季度为单位
prng = pd.period_range(‘1990Q1’, ‘2000Q4’, freq=‘Q-NOV’)

转换成时间日期

prng.to_timestamp()

运算


  • deltime=pd.Timestamp(‘20200110’)-pd.Timestamp(‘20200210’)


  • sumtime = pd.Timestamp(‘20200210’)+pd.Timedelta(days=5)

类别数据category

添加categories数据
df[“grade”] = df[“raw_grade”].astype(“category”)

查看类别

df.grade.cat.categories

重命名

rename = df[“grade”].cat.categories = [“11”, “22”, “33”]

排序

  • 升序
    sortct=df.sort_values(by=‘grade’, ascending=True)

  • 降序
    sortct=df.sort_values(by=‘grade’, ascending=False)

数据可视化

表格.plot()

数据读写csv


  • 表格.to_csv(‘data.csv’)

  • pd.read_csv(‘data.csv’, index_col=0)

代码

import pandas as pd
import numpy as np
#索引
#索引转换

#索引
dates = pd.date_range('20200208',periods=3)
s = pd.DataFrame(np.random.randn(3,4),index=dates,columns=list('abcd'))
x = s[s>0]
print('索引比较')
print(x)


x = s.copy()

tag = ['a'] + ['b']  + ['c']
x['Tag'] = tag
print('复制后查找')
print(x)

y = x[x.Tag.isin(['a','b'])]
print(y)

dates  = pd.date_range('20200209',periods = 6)
df  = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('abcd'))

df1 = df.reindex(index=dates[0:4],columns=list(df.columns) + ['e'])
print('重新索引')
print(df1)


tuples = list(zip(*[['bar', 'bar', 'baz', 'baz',
                     'foo', 'foo', 'qux', 'qux'],
                    ['one', 'two', 'one', 'two',
                     'one', 'two', 'one', 'two']]))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B'])

print(df)

#此时有三层索引
stacked = df.stack()

print('索引转换')
print(stacked)
print(stacked.index)

##转换回来
reversestacked = stacked.unstack()
print(reversestacked)

reversestacked = stacked.unstack().unstack()
print(reversestacked)

#数据透视

df = pd.DataFrame({'A' : ['one', 'one', 'two', 'three'] * 3,
                    'B' : ['A', 'B', 'C'] * 4,
                    'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2,
                    'D' : np.random.randn(12),
                    'E' : np.random.randn(12)})
print(df)

#行索引为AB 列索引为C NaN代表不存在 多个求平均值
print('数据透视')
print(pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C']))

#时间序列
#创建
##1
rng = pd.date_range('20200210', periods=600, freq='s')
ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng)
print('时间序列')
print('创建')
print(ts)

##采样2分钟 用作求和 how=‘mean’
print(ts.resample('2Min', how='sum'))

##2
#季度为单位
prng = pd.period_range('1990Q1', '2000Q4', freq='Q-NOV')
print(prng)

#转换成时间日期
print('转换日期')
print(prng.to_timestamp())

#运算
deltime=pd.Timestamp('20200110')-pd.Timestamp('20200210')
print('运算')
print(deltime)

sumtime = pd.Timestamp('20200210')+pd.Timedelta(days=5)
print(sumtime)

#类别数据
df = pd.DataFrame({"id":[1,2,3,4,5,6], "raw_grade":['a', 'b', 'b', 'a', 'a', 'e']})

###添加categories数据
df["grade"] = df["raw_grade"].astype("category")
print('类别数据')
print('添加')
print(df)
print(df.grade)

##查看类别
print(df.grade.cat.categories)
print('查看')
##重命名
rename = df["grade"].cat.categories = ["11", "22", "33"]
print('重命名')
print(rename)
##排序
sortct=df.sort_values(by='grade', ascending=True)
print('排序')
print(sortct)

sortct=df.sort_values(by='grade', ascending=False)
print(sortct)

#数据可视化
ts = pd.Series(np.random.randn(1000), index=pd.date_range('20200101', periods=1000))
ts = ts.cumsum()
print(ts)
ts.plot()

#数据读写csv
df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD'))
print('读写csv')
df.to_csv('data.csv')
print(pd.read_csv('data.csv', index_col=0))

python数据科学(五):pandas基础—— 时间序列类别索引透视
python数据科学(五):pandas基础—— 时间序列类别索引透视
python数据科学(五):pandas基础—— 时间序列类别索引透视
python数据科学(五):pandas基础—— 时间序列类别索引透视
python数据科学(五):pandas基础—— 时间序列类别索引透视
python数据科学(五):pandas基础—— 时间序列类别索引透视
数据透视

python数据科学(五):pandas基础—— 时间序列类别索引透视
时间序列

python数据科学(五):pandas基础—— 时间序列类别索引透视
python数据科学(五):pandas基础—— 时间序列类别索引透视
类别数据
python数据科学(五):pandas基础—— 时间序列类别索引透视
python数据科学(五):pandas基础—— 时间序列类别索引透视
读取
python数据科学(五):pandas基础—— 时间序列类别索引透视
python数据科学(五):pandas基础—— 时间序列类别索引透视