基础工具包
- python 原生数据结构
- 元组 Tuple
- 列表 list
- 集合 set
- 字典 dictionary
- NumPy 数据结构
- 数组 Ndarray
- 矩阵 Matrix
- Pandas 数据结构
- 序列 Series (一维)
- 数据框 DataFrame (二维)
- Matplotlib 数据可视化
- 绘制饼图
- 绘制折线图
- 绘制直方图
- 绘制散点图
- 绘制箱型图
- 使用 DataFrame 绘图
- 折线图
- 横柱形图
- 柱形图
- 面积图
- 散点图
- 饼图
- 二维直方图
python 原生数据结构
元组 Tuple
一个元素不可修改的线性数据结构,数据项放在 () 内。
(1)元组的创建形式
tup1=("manhman","guoguo",1988,2000)
tup2=(1,)
tup3="a","b","c","d"
tup4=()
seq=['a','b','c']
tup5=tuple(seq)
其中,元组一旦创建就不能修改其中某一个元素的信息
(2)元组的查询
可以通过下标访问到元组中的每个元素
(3)元组的删除
元组一旦创建成功之后,元组内的数据是不可被修改的,要删除元组中某个元素也是不被允许的,只能整体删除元组
(4)元组的链接
可以将多个元组合并为一个元组
也可以将一个元组复制多份
(5)tuple 的特殊操作
计算元组长度,以及最大最小值:
元组内元素类型的转换:
列表 list
一个有序且可变长度的线性数据结构,列表项放在 [] 内。
(1)列表的创建
(2)列表的查询
(3)列表增加元素
(4)列表的删除
(5)列表的修改
(6)列表特殊操作
同样也可以进行强制类型转换
集合 set
一个元素无序且元素不可重复的数据结构,集合中的元素放在 {} 内。
(1)集合的创建
(2)集合查询
(3)集合增加
add 将整个元素信息直接进行插入,若要插入的元素存在则无意义;
update 是将元素一个一个进行插入
(4)集合删除
remove() 函数可以删除指定元素,若要删除元素不存在则会报错;
discard() 函数可以删除指定元素,若元素不存在不报错;
pop() 函数是随机删除一个元素;
clear() 将整个集合进行清空
(5)集合特殊操作
字典 dictionary
一组具有多个键值对组成的数据结构,形式为:{键1:值1, 键2:值2, …}
(1)创建字典
(2)字典查询
(3)字典增加
(4)字典删除
(5)字典的修改
NumPy 数据结构
数组 Ndarray
引入 Numpy 包,将其命名为 np
import Numpy as np
(1)数组的创建
(2)数组查询
(3)数组增加
(4)数组删除
(5)数组修改
(6)特殊操作
数组的转置
数组的堆叠
矩阵 Matrix
(1)矩阵创建
(2)矩阵查询
(3)矩阵增加
(4)矩阵删除
(5)矩阵乘法
(6)矩阵转置,求逆
(7)矩阵的特征向量,特征值
Pandas 数据结构
pandas 包中的数据结构主要包含 序列(Series)、(DataFrame)
import pandas as pd
序列 Series (一维)
(1)创建序列
(2)序列查询
(3)序列追加
(4)序列删除
(5)序列修改
(6)特殊操作
创建时间序列
数据框 DataFrame (二维)
(1)创建
(2)查询
(3)增加操作
(4)删除操作
(5)合并操作
dic1={'name':['liuli','tony','jesper'],'no':['001','002','003'],'age':[12,13,14]}
dir1=pd.DataFrame(dic1)
print('\ndir1:\n',dir1)
dic2={'new_chat':['should','may','substr']}
dir2=pd.Series(dic2)
print('\ndir2:\n',dir2)
dir3=pd.concat([dir1,dir2],axis=1) # 列合并
print('\n合并之后:\n',dir3)
dic1={'name':['liuli','tony','jesper'],'no':['001','002','003'],'age':[12,13,14]}
dir1=pd.DataFrame(dic1)
print('\ndir1:\n',dir1)
dic2={'name':['wangwa'],'no':['004'],'age':[35]}
dir2=pd.DataFrame(dic2)
print(dir2)
dir3=pd.concat([dir1,dir2],axis=0,ignore_index=True) # 行合并
print('\n合并之后:\n',dir3)
Matplotlib 数据可视化
绘制饼图
plt.pie()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 使用 pandas 包内部读取数据文件
sdata=pd.read_csv('./sdata.csv',encoding='utf-8',index_col=0)
print(sdata.head()) # 展示前五行数据
plt.rcParams['font.sans-serif']='SimHei' # 设置中文字体
plt.rcParams['axes.unicode_minus']=False # 正常显示负号
plt.figure(figsize=(5,5)) # 窗口大小
plt.title('2018年5月21日~29日成交量饼图')
label=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35)
plt.pie(sdata.volume,labels=label) # 饼图
plt.grid(True)
plt.show() # 展示图形
绘制折线图
plt.plot()
#折线图
plt.plot(sdata.open,'r-',marker='o',label='open')
plt.plot(sdata.high,'b--',marker='*',label='high')
plt.plot(sdata.close,'g',marker='^',label='close')
plt.legend(loc=0) # 设置左上角标签
plt.grid(True)
plt.xlabel('index')
plt.ylabel('value')
plt.title('Sdata Trend')
plt.show()
绘制直方图
plt.bar()
# 直方图
label=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35)
plt.bar(label,sdata.volume,color='g',width=0.5)
plt.grid(True)
plt.xlabel('index')
plt.ylabel('volume')
plt.title('2018.5.21~2018.5.29')
plt.show()
绘制散点图
plt.scatter
# 散点图
label=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35)
plt.scatter(label,sdata.low,marker='o')
plt.show()
绘制箱型图
plt.boxplot()
#箱型图
plt.boxplot((sdata.open,sdata.high,sdata.close),labels=('open','high','close'))
plt.show()
箱型图,从下往上分别代表数据的最小值,25%值区间,50%值区间,75%值区间,以及数据的最大值
使用 DataFrame 绘图
折线图
# DataFrame 绘图-----折线图
# 随机生成一个 10*3 的DataFrame 数据框,时间范围在 1~10
plot_df=pd.DataFrame(np.random.randint(1,10,30).reshape(10,3), columns=list('abc'))
plot_df.head()
plot_df.plot(subplots=True,figsize=(5,5))
plt.show()
横柱形图
# DataFrame 绘图----横柱形图
plot_df.plot(kind='barh')
plt.show()
柱形图
# DataFrame绘图 - ---横柱形图
plot_df.plot(kind='bar',stacked=True)
plt.show()
面积图
# DataFrame绘图 - ---面积图
plot_df.plot(kind='area')
plt.show()
散点图
# DataFrame绘图 - ---散点图
plot_df.plot('a','b',kind='scatter')
plt.show()
饼图
# DataFrame绘图 - ---饼图
plot_df['a'].plot(kind='pie')
plt.show()
二维直方图
# DataFrame绘图 - ---二维直方图
plot_df2=pd.DataFrame(np.random.randn(1000,2),columns=['a','b'])
plot_df2.plot.hexbin(x='a',y='b',gridsize=25)
plot_df2.head() # 展示前五行数据
plt.show()
二维直方图可以想象为俯视的直方图