ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

金融数据处理入门

金融数据处理入门

### numpy

1.NumPy的科学计算库

array列表属性

np.mean 求均值

np.median 求中位数

np.std 求标准差

np.prod 计算数组所有元素的乘积

(.prod():整体乘积,结果是一个数。

.cumprod():累计乘积,结果是一个序列。)

在 np.mean(stock_prices, axis=1) 中,axis=1 表示对数组的每一行进行求均值。

axis=0:对每一列求均值。

axis=1:对每一行求均值。

你的代码会输出每只股票(每一行)的均价。

```

arr = np.array([1, 2, 3, 4])

result = np.prod(arr) # 或 np.prod(arr)

print(result) # 输出 24

arr2 = np.array([[1, 2], [3, 4]])

print(np.prod(arr2, axis=0)) # 输出 [3 8],每列相乘

print(np.prod(arr2, axis=1)) # 输出 [2 12],每行相

```

EX:array02

2.NumPy的随机数生成

1.随机生成0-1的数字

2.数字呈正态分布

np.random.seed(0)(设置随机数生成器的种子,保证每次运行代码时生成的随机数序列都一样,方便结果复现和调试。 0 是随机数种子的值,可以是任意整数。不同的种子值会生成不同的随机数序列。只要种子值一样,每次生成的随机数序列就一样)

random_matrix = np.random.rand(3, 4)

Random Matrix:

[[0.5488135 0.71518937 0.60276338 0.54488318]

[0.4236548 0.64589411 0.43758721 0.891773 ]

[0.96366276 0.38344152 0.79172504 0.52889492]]

3.NumPy的基本数学运算

可以相加相乘相乘+ / >

### Matplotlib可视化库

import numpy as np

from matplotlib import pyplot as plt

stock_prices = np.array([10.5, 11.0, 10.8, 11.2, 11.5,

10.7, 10.9, 11.1, 11.3, 11.4])

x=np.arange(0,len(stock_prices))

#arange(start, stop):从 start 到 stop(不包括 stop),步长为 1。

#在你的代码里,假如 stock_prices 长度是 10,np.arange(0, 10) 就会生成 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]。

y=stock_prices

plt.title("Stock Prices Over Time")

plt.xlabel("Time")

plt.ylabel("Price")

plt.plot(x,y)

plt.show()


### Pandas

1.Series与DataFramePandas里面有两个重要的概念,Series和DataFrame。Series翻译成中文就是“系列”​;DataFrame则直译为“数据框”​。

[a1,a2,a3,a4]其中a1,a2,a3,a4是4阶列向量。Series就相当于a1或a2或a3或a4,就是其中一个列向量。DataFram就相当于整体矩阵。

2.DataFrame中没有字符串,所有字符串类型被储存为对象类型,也就是object

3.每一列的数据就是一个序列(Series),整个表格就是 DataFrame。

EX:pandaa01.py

3.Pandas的输入与输出

pd.read_csv()=读取csv

DataFrame.dtypes=查看每列数据类型

DataFrame[columns].astype=改变对应列的数据类型(colums每列的第一行名字)

DataFrame.to_csv("文件名",index=False)=保存数据index=true就是前面加一列[0,1,2.....]

EX:pandaa02.py

4.DataFrame的数据选取

DataFrame.head() 不填数据默认显示前5行数据

DataFrame.tail() 不填数据默认显示后5行数据

DataFrame[["columns01","columns03","columns05"]]默认选取第一列,第三列和第五列的数据

DataFrame[DataFrame["columns01"]=="aa"]默认选取第一列中满足aa条件的行

DataFrame.iloc[4:8,2:-1]获取第5到第9行(不包括第9行)的同时,也获取了第3列到最后一列(不包括最后一列)的数据

.dt 是 pandas 提供的日期时间属性访问器,用于从 datetime 类型的 Series 中提取日期、时间、年、月、日等信息。

DataFrame['columns01'].dt.time/year/date/mouth

EX:pandaa03.py

5.Pandas的排序

DataFrame.sort_values(by=["columns01","columns03"],ascending=True,inplace=False)

先按照columns01列排列,再按照columns03排列,

其中scending是升序和降序,默认从小到大flase,

inplace=False(默认),则会返回一个排序后的新 DataFrame,原数据不变。

EX:pandaa04.py

6.统计描述与分组

DataFrame.describe()汇总所有数值类型的列,包括 int、float、double(在 pandas 里主要是 int 和 float)。

这些类型的列会显示计数、均值、标准差、最小值、最大值、分位数等统计信息。

DataFrame[DataFrame["columns01"]=="aa"].describe() 用筛选语句和统计信息合并使用,可以具体表示具体某些行或列的统计信息

分组统计

DataFrame.groupby('columns01')['columns02'].apply(np.mean)

按'columns01'列分组,并计算'columns02'列的平均值

EX:pandaa05.py

7. Pandas的数据可视化

.plot(底层依然是调用matplotlib,是panadas的调用matplotlib方法,可以直接用于 Series 或 DataFrame)

(plt.show():负责显示图像窗口,是直接matplotlib的方法)

.hist():绘制直方图(bins指定柱子的数量)

.boxplot():绘制箱线图

.bar():绘制柱状图

.pie():绘制饼图

.scatter():绘制散点图(DataFrame 才有)

EX:pandaa06.py

8. 多个DataFrame处理

.merge("主表格",'需要合并的表格',on='哪一列',how='如何合并') how中有left,right,inner,outer四种合并方式


RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进