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

这篇博客介绍了Python数据科学中pandas库的基础操作,包括行列索引、多级索引、数据透视、时间序列处理和类别数据的使用。详细讲解了如何进行索引选择、重索引、排序、统计,以及时间序列的创建、转换和运算。同时,还涉及到了类别数据的查看、重命名和排序等操作。
摘要由CSDN通过智能技术生成

索引

行列索引

index columns

  • 与某个值比较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’])

多级索引MutiIndex

可以用二维的数据表达更高维度的数据
用处:在分析股票数据,一级行索引可以是日期;二级行索引可以是股票代码,列索引可以是股票的交易量,开盘价,收盘价等等。这样就可以把多个股票放在同一个时间维度下进行考察和分析。

  • Series多层索引

  • DataFrame 多层索引

索引交换及排序

  • 交换
    df.swaplevel(‘索引1’,‘索引2’)
  • 排序
    df.sort_index(0) 一级索引排序
    df.sort_index(1) 二级索引排序

按照索引级别进行统计

索引转换

索引与列转换

df.set_index 设置多级索引
df.reset_index() 设置成平面的索引

索引间转

  • 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

##行列索引
s = pd.Series(np.random.rand(5), index=list('abcde'))
print('行列索引')
print(s)
print(s.index)

s.index.name = 'alpha'
print(s)

df = pd.DataFrame(np.random.randn(4, 3), columns=['one', 'two', 'three'])
print(df)
print(df.index)
print(df.columns)

##多层索引
#### Series 多层索引
print('Series 多层索引')
a = [['a', 'a', 'a', 'b', 'b', 'c', 'c'], [1, 2, 3, 1, 2, 2, 3]]
tuples = list(zip(*a))
print(tuples)

index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
print(index)

s = pd.Series(np.random.randn(7), index=index)
print(s)
print(s.index)
print(s.index.levels[0])
print(s.index.levels[1])


print(s['b'])
print(s['b':'c'])
print(s[['b', 'a']])
pri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值