为何使用Pandas
便捷的数据处理能力
读取文件方便
封装了Matplotlib、Numpy的画图和计算html
3大核心结构:java
DataFrame
Panel
Series数组
一、DataFrame数据结构
DataFrame
结构:既有行索引,又有列索引的二维数组
属性:
shape
index
columns
values
T
方法:
head()
tail()
3 DataFrame索引的设置
1)修改行列索引值
2)重设索引
3)设置新索引dom
简单demo:spa
import numpy as np import pandas as pd def demo(): data = np.random.normal(0, 1, (10, 5)) print(data) # 添加行索引 stock = [ "股票{}".format(i) for i in range(10) ] pd.DataFrame(data, index=stock) # 添加列索引 date = pd.date_range(start="20180101", periods=5, freq="B") if __name__ == '__main__': demo()
一、结构:orm
二、属性htm
shape + index + columns + values + Tblog
data = np.random.normal(0, 1, (10, 5))
三、方法索引
head() : 默认返回数据的前5行,head(3),返回前3行
tail() :默认返回数据的后5行,tail(3),返回后3行
四、DataFrame索引的设置
1)修改行列索引值: 只能总体修改,不能单独修改索引
2)重设索引
3)设置新索引
import numpy as np import pandas as pd def demo(): data = np.random.normal(0, 1, (10, 5)) print(data) # 添加行索引 stock = [ "股票{}".format(i) for i in range(10) ] pd.DataFrame(data, index=stock) # 一、添加列索引 date = pd.date_range(start="20180101", periods=5, freq="B") # 修改行列索引值:总体修改,不能单独修改某一个 # 【错误】 data.index[2] = "股票88" --》 不能单独修改索引 stock_ = ["股票_{}".format(i) for i in range(10)] data.index = stock_ # 二、重设索引 data.reset_index(drop=False) # False: 不删除原索引, True删除原索引h, 默认False # 三、设置某列的新索引,建立新的dataframe df = pd.DataFrame({'month': [1, 4, 7, 10], 'year': [2012, 2014, 2013, 2014], 'sale': [55, 40, 84, 31]}) # 以月份设置新的索引 df.set_index("month", drop=True) # 设置多个索引,以年和月份(具备多索引的DataFrame,可用于三维数组) new_df = df.set_index(["year", "month"]) if __name__ == '__main__': demo()
MultiIndex与Panel
一、MultiIndex
import pandas as pd def demo(): df = pd.DataFrame({'month': [1, 4, 7, 10], 'year': [2012, 2014, 2013, 2014], 'sale': [55, 40, 84, 31]}) new_df = df.set_index(["year", "month"]) print(new_df.index) # 索引列表 print(new_df.index.names) # 索引名称 if __name__ == '__main__': demo()
二、Panel
panel咱们一般看作pandas的容器,没办法直接看3维数据,只能从某一个维度出发看另外2个二维的数据
Series