数据结构
一.Series
概述:
Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成。
创建:
# 导入pandas
import pandas as pd
pd.Series(data=None, index=None, dtype=None)
参数:
- data:传入的数据,可以是ndarray、list等
- index:索引,必须是唯一的,且与数据的长度相等。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。
- dtype:数据的类型
操作:
#通过列表创建数据
import pandas as pd
pd.Series([3,5,6,7,8],index=np.arange(0,5))
#通过字典创建数据
color_count = pd.Series({'red':100, 'blue':200, 'green': 500, 'yellow':1000}) #通过字典创建数据
color_count
二.DataFrame
概述:
DataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引
- 行索引,表明不同行,横向索引,叫index,0轴,axis=0
- 列索引,表名不同列,纵向索引,叫columns,1轴,axis=1
创建:
# 导入pandas
import pandas as pd
pd.DataFrame(data=None, index=None, columns=None)
参数:
- index:行标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。
- columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。
操作:
和numpy数组对比:
案例:随机生成十名学生的五门课程成绩,成绩均在[40,100)之间;
#生成不带索引的成绩
score = np.random.randint(40,100,(10,5))
score
#生成带索引的成绩
pd.DataFrame(score)
#给行索引添加学生信息,给列索引添加课程信息
subjects = ["语文","数学","英文","政治","物理"]
students=["学生{}".format(i) for i in range(score.shape[0])] #score.shape[0])获取行的个数
data=pd.DataFrame(score,index=students,columns=subjects) #data=score,行索引为students,列索引为subjects
data
#更换行列位置
data.T #转置 a(i,j)=b(j,i)
#获取前六名学生成绩
data.head(6) #如果不填,默认显示前五行
#获取后六名学生成绩
data.tail(6) #不补充参数,默认后5行
#不删除原来索引值的情况下生成新的行索引
data.reset_index() #drop:默认为False,不删除原来索引,如果为True,删除原来的索引值
#删除原来的行索引,生成新的行索引
data.reset_index(drop=True)
#修改全部行索引
stu=['学生_{}'.format(i) for i in range(data.shape[0])]
data.index=stu #修改全部行索引
data
添加行列索引:
修改行列索引信息并转置:
显示特定行数据:
行索引的删除方法:
时间设置:
date_range(start=None ,end=None,periods=None,freq="B")
start:开始时间
end:结束时间
periods:时间天数
freq:递进单位,默认1天,"B"默认略过周末
示例:随机生成中位数是0,方差为1的自2017-01-01开始的八只股票的十天的涨跌幅
#随机生成中位数为0,方差为1的八只股票的十个交易日涨跌幅情况
import numpy as np
stock = np.random.normal(0,1,(8,10))
stock
#获取2017-01-01开始的十天交易日
import pandas as pd
data=pd.date_range("2017-01-01",periods=stock.shape[1],freq="B")
data
#设置股票交易名称以及时间并生成表格
stock_name = ["stock_{}".format(i) for i in range(stock.shape[0])]
pw=pd.DataFrame(stock,index=stock_name,columns=data)
pwpw=pd.DataFrame(stock,columns=data)
pw