Python数据分析与挖掘实战(1-3章)

news/2024/11/20 3:36:30/文章来源:https://www.cnblogs.com/zhouwp/p/18197191

非原创,仅个人关于《Python数据分析与挖掘实战》的学习笔记

第一章 基础

第二章 数据分析简介

基本概念

元组、列表、字典、集合

函数式编程:

  • map()函数:定义一个函数,然后用map()逐一应用到map列表中的每个元素。map(lambda x+2:a)
  • reduce()函数:用于递归计算。reduce(lambda x,y:x*y,range(1,n+1))

数据分析常用库

  • numpy 数组,高效处理函数
  • scipy 矩阵相关计算
  • matplotlib 可视化
  • pandas 数据分析
  • statsmodels 统计建模
  • scikit-learn 回归、分类、聚类等机器学习
  • keras 深度学习,建立神经网络及深度学习模型
  • gensim 文本主题模型,文本挖掘

第三章 数据探索

3.1 数据质量分析

  • 缺失值分析
  • 异常值
import pandas as pd
from scipy import stats# 读取CSV文件
data = pd.read_csv(f'E:\中经社\中资美元债\PVR\CEIS_Corps_Pricing_Liquidity_20240409.csv')# 假设我们对数值型数据进行异常值检测,这里以'amountOutstanding'列为例
# 首先,确保数据是数值型的
data['amountOutstanding'] = pd.to_numeric(data['amountOutstanding'], errors='coerce')# 计算Z-score
z_scores = stats.zscore(data['amountOutstanding'])# 找出Z-score的绝对值大于1的点作为异常值
threshold = 1
abs_z_scores = abs(z_scores)
anomaly_indices = abs_z_scores > threshold# 标记异常值
data['anomaly'] = False
data.loc[anomaly_indices, 'anomaly'] = True# 显示含有异常值的行
data[data['anomaly']]
priceAsOfnameisincusipshortNametickeramountOutstandingclassificationbondTypebondSubType...liquidityScore30DayCountliquidityScore60DayliquidityScore60DayCountliquidityScore90DayliquidityScore90DayCountquotesCount1DayquotesCount10DayquotesDealerCount1DayquotesDealerCount10Dayanomaly
02024-04-09GS1600XS2446005907Y3991YRL9Indl & Coml Bk China Ltd Hong KongUNBKHK1200000000FinancialsFixedFixed...22142164112901613True
12024-04-09GS1600USG7801RAE92G7801RAE9Sands China LtdSANDCHI3062000Consumer ServicesStepupFixedStep...221421642281692014True
22024-04-09GS1600USG7801RAD10G7801RAD1Sands China LtdSANDCHI2625000Consumer ServicesStepupFixedStep...221421642011682014True
92024-04-09GS1600US00131MAJ2700131MAJ2AIA Group LtdAIAGRO1000000000FinancialsFixedFixed...221421643682752317True
102024-04-09GS1600US00131LAJ4400131LAJ4AIA Group LtdAIAGRO1000000000FinancialsFixedFixed...221421643502562216True
162024-04-09GS1600XS2384565508Y3969JAU8INDL COML BK OF CHINA LTD SINGAPORE BRHINDUANBE1050000000FinancialsFixedFixed...22142164106881311True

6 rows × 169 columns

箱型图异常值检测

import pandas as pd
import matplotlib.pyplot as plt
# 解决中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 请确保您的文件路径是正确的
file_path = r'E:\中经社\中资美元债\PVR\CEIS_Corps_Pricing_Liquidity_20240409.csv'# 读取CSV文件
data = pd.read_csv(file_path)# 选择'bidPrice'列数据进行箱型图绘制,并确保数据是数值型的
data['bidPrice'] = pd.to_numeric(data['bidPrice'], errors='coerce')# 计算箱线图的统计数据,quantile()样本分位数 (不同 % 的值)
Q1 = data['bidPrice'].quantile(0.25)
Q3 = data['bidPrice'].quantile(0.75)
IQR = Q3 - Q1# 计算异常值的阈值
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR# 过滤出数据中的异常值
outliers = data[(data['bidPrice'] < lower_bound) | (data['bidPrice'] > upper_bound)]# 绘制箱线图
plt.figure(figsize=(10, 6))  # 设置图表的大小# 绘制箱型图,这里notch=True表示带有凹槽的箱型图,vert=True表示垂直箱型图
box = plt.boxplot(data['bidPrice'], notch=True, vert=True)# 添加异常值标记
plt.plot([1]*len(outliers), outliers['bidPrice'], 'ro', markersize=5) # 设置标题和轴标签
plt.title('异常值检测箱型图分析')
plt.xlabel('Bid Price')# 由于只有一个箱体,我们将X轴的刻度和标签设置为一个点,以避免混淆
plt.xticks([1])# 显示图表
plt.show()

  • 不一致的值
  • 重复数据及含有特殊符号的数据

3.2 数据特征分析

3.2.1 分布分析

3.2.1.1 定量

从df中提取销售额数据

# 方法1:
sales = df['销售额(元)']# 绘制直方图
plt.hist(sales, bins=10, edgecolor='black')# 添加标题和标签
plt.title('频率分布直方图')
plt.xlabel('销售额(元)')
plt.ylabel('频次')# 显示图形
plt.show()

# 方法2:
import matplotlib.pyplot as plt
import numpy as np
# 从df中提取销售额数据
sales = df['销售额(元)']# 计算频率分布
values, base = np.histogram(sales, bins=10, density=True)# 计算直方图的宽度,即每个bin的宽度
width = (df['销售额(元)'].max() - df['销售额(元)'].min()) / 10# 计算直方图的中心点
center = (base[1:] + base[:-1]) * 0.5# 绘制直方图
plt.bar(center, values, width=width, label='频率分布', edgecolor='black')# 添加标题和标签
plt.title('频率分布直方图')
plt.xlabel('销售额(元)')
plt.ylabel('频率')# 显示图例
plt.legend()# 显示图形
plt.show()

3.2.1.2 定性

常常采用饼图和条形图来描述。

3.2.2 对比分析

  • 绝对比较
  • 相对比较

3.2.3 统计量分析

3.2.3.1 集中趋势度量
  • 均值
  • 中位数
  • 众数
3.2.3.1 离中趋势度量
  • 极差
statistics = sales.describe()
statistics
count      19.000000
mean     1496.684211
std      1198.271211
min        45.000000
25%       420.000000
50%      1710.000000
75%      2220.000000
max      3960.000000
Name: 销售额(元), dtype: float64

\[极差=max-min \]

statistics.loc['range'] = statistics.loc['max']-statistics.loc['min']
  • 标准差

\[s=\sqrt \frac{\sum(x_i-\overline x)^2}{n} \]

  • 变异系数

\[CV=\frac{s}{\overline x}\times 100\% \]

statistics.loc['var'] = statistics.loc['std']-statistics.loc['mean']
  • 四分位数区距
statistics.loc['dis'] = statistics.loc['75%']-statistics.loc['25%']
statistics
count      19.000000
mean     1496.684211
std      1198.271211
min        45.000000
25%       420.000000
50%      1710.000000
75%      2220.000000
max      3960.000000
range    3915.000000
var      -298.413000
dis      1800.000000
Name: 销售额(元), dtype: float64

3.2.4 周期性分析

  • 时序图

3.2.5 贡献度分析

from io import StringIO
# 假设数据已经被转换成了CSV格式的字符串
data_csv = """id,mame,profit
17148,Al,9173
17154,A2,5729
109,A3,4811
117,A4,3594
17151,AS,3195
14,A6,3026
2868,A7,2378
397,A8,1970
88,A9,1877
426,A10,1782"""# 使用StringIO来创建一个字符串流
data_csv_df = pd.read_csv(StringIO(data_csv))# 显示DataFrame
data_csv_df
idmameprofit
017148Al9173
117154A25729
2109A34811
3117A43594
417151AS3195
514A63026
62868A72378
7397A81970
888A91877
9426A101782

通过分析,做出增加对哪些菜品的成本投入。

data_csv_df = data_csv_df['profit'].copy()
data_csv_df.sort_values (ascending = False)
0    9173
1    5729
2    4811
3    3594
4    3195
5    3026
6    2378
7    1970
8    1877
9    1782
Name: profit, dtype: int64
import matplotlib.pyplot as plt# 创建图形并绘制柱状图
plt.figure()
data_csv_df.plot(kind='bar')
plt.ylabel('盈利')  # 设置主 y 轴的标签# 计算累计和并绘制
p = 1.0 * data_csv_df.cumsum() / data_csv_df.sum()
p.plot(color='r', secondary_y=True, style='-o', linewidth=2)
# 设置次 y 轴的标签,并指定颜色
plt.ylabel('盈利(比例)', color='r')# 选择要注释的数据点
# 假设我们注释第七个数据点
value_to_annotate = p.iloc[6]# 格式化数据点的值
formatted_value = format(value_to_annotate, '.4%')# 添加注释
plt.annotate(formatted_value,  # 注释的文本xy=(p.index[6], value_to_annotate),  # 注释文本的起始点 (x, y)xytext=(0, 20),  # 注释文本的结束点 (x, y),根据实际情况调整textcoords='offset points',  # 指定注释文本的坐标系统arrowprops=dict(arrowstyle="->",  # 箭头样式connectionstyle="arc3,rad=.2"  # 连接样式),color='r'  # 注释文本颜色与线颜色相同
)# 显示图形
plt.show()

<b结论:

A1~A7 这7个菜品,占菜品种类数的70%,总盈利占总盈利额的85.0003%

3.2.6 相关性分析

3.2.6.1 直接绘制散点图

import numpy as np
import matplotlib.pyplot as plt# 生成随机数据
np.random.seed(0)
x = np.random.rand(100)  # 第一个变量
y = 2 * x + np.random.normal(0, 0.1, 100)  # 第二个变量与第一个变量存在线性关系,并加入一些噪声
# y = 2 * x**2 + np.random.normal(0, 0.1, 100)  # 第二个变量与第一个变量存在非线性关系,并加入一些噪声
# y = -2 * x + np.random.normal(0, 0.1, 100)  # 第二个变量与第一个变量存在负线性关系,并加入一些噪声# 绘制散点图
plt.scatter(x, y, color='blue', label='Data Points')# 计算相关系数
correlation = np.corrcoef(x, y)[0, 1]# 添加标题和标签
plt.title('2个变量的相关性分析')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()# # 添加相关系数标注
# plt.annotate(f'Correlation: {correlation:.2f}', xy=(0.05, 0.95), xycoords='axes fraction', fontsize=10, ha='left', va='top', bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5))# 显示图形
plt.show()

3.2.6.2 绘制散点图矩阵

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import warnings# 忽略警告
warnings.filterwarnings("ignore")# 生成一些示例数据
np.random.seed(0)
data = pd.DataFrame(np.random.randn(100, 4), columns=['A', 'B', 'C', 'D'])# 添加非线性相关关系
data['B'] = data['A'] + np.random.normal(0, 1, 100)
data['C'] = 2 * data['A'] + np.random.normal(0, 2, 100)
data['D'] = -3 * data['A'] + np.random.normal(0, 3, 100)# 将无穷大值替换为NaN
data.replace([np.inf, -np.inf], np.nan, inplace=True)# 绘制散点图矩阵
sns.pairplot(data)
plt.show()

3.2.6.3 计算相关系数

皮尔逊相关
import numpy as np# 生成示例数据
np.random.seed(0)
x = np.random.rand(100)  # 生成100个在[0,1)之间的随机数
y = 2 * x + np.random.normal(0, 0.1, 100)  # y与x存在线性关系,并加入一些噪声# 使用NumPy计算Pearson相关系数
correlation = np.corrcoef(x, y)[0, 1]print("Pearson相关系数:", correlation)
print("p_value:", p_value)
Pearson相关系数: 0.9853103832101714
p_value: 5.4168015521507496e-42
斯皮尔曼相关
import numpy as np
from scipy.stats import spearmanr# 生成示例数据
np.random.seed(0)
x = np.random.rand(100)  # 生成100个在[0,1)之间的随机数
y = x**2 + np.random.normal(0, 0.1, 100)  # y与x存在非线性关系,并加入一些噪声# 使用SciPy计算Spearman相关系数
correlation, p_value = spearmanr(x, y)print("Spearman相关系数:", correlation)
print("p_value:", p_value)
Spearman相关系数: 0.9213201320132012
p_value: 5.4168015521507496e-42
import numpy as np
from scipy.stats import spearmanr# 生成示例数据
np.random.seed(0)
x = np.random.rand(100)  # 生成100个在[0,1)之间的随机数
y = x**2 + np.random.normal(0, 0.1, 100)  # y与x存在非线性关系,并加入一些噪声# 使用SciPy计算Spearman相关系数
correlation, p_value = spearmanr(x, y)print("Spearman相关系数:", correlation)
print("p-value:", p_value)# 判断相关系数是否显著
alpha = 0.05
if p_value < alpha:print("Spearman相关系数显著")
else:print("Spearman相关系数不显著")
Spearman相关系数: 0.9213201320132012
p-value: 5.4168015521507496e-42
Spearman相关系数显著

p-value(P值)

p-value(P值)是用于评估在零假设成立的情况下,观察到的统计量或更极端情况的概率。在统计学中,零假设通常是指两个变量之间不存在任何关系,或者另一种说法是它们之间的关系是随机的。

在Spearman相关系数的情境下,p-value可以用来判断样本数据中的Spearman相关系数是否显著。具体来说:

  • 如果p-value小于给定的显著性水平(通常设为0.05),则我们拒绝零假设,即我们认为观察到的Spearman相关系数不是由随机性导致的,而是由于真实的相关性。
  • 如果p-value大于显著性水平,则我们接受零假设,即我们认为观察到的Spearman相关系数可能是由随机性引起的,而不是真实的相关性。
import numpy as np
from scipy.stats import spearmanr# 生成示例数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([3434, 2343, 4234, 125,56])# 使用SciPy计算Spearman相关系数
correlation, p_value = spearmanr(x, y)print("Spearman相关系数:", correlation)
print("p-value:", p_value)# 判断相关系数是否显著
alpha = 0.05
if p_value < alpha:print("Spearman相关系数显著")
else:print("Spearman相关系数不显著")
Spearman相关系数: -0.7
p-value: 0.1881204043741873
Spearman相关系数不显著

继续介绍案例:

# 菜品名称
dishes = ['百合酱蒸凤爪', '翡翠蒸香茜饺', '金银蒜汁蒸排骨', '乐膳真味鸡', '蜜汁焗餐包', '生炒菜心', '铁板酸菜豆腐', '香煎韭菜饺', '香煎萝卜糕', '原汁原味菜心']# 日期
dates = ['2015/1/1', '2015/1/2', '2015/1/3', '2015/1/4', '2015/1/5', '2015/1/6']# 销量数据,每个列表中的数字对应相应菜品在对应日期的销量
sales_data = [[17, 6, 8, 24, 13, 13, 18, 10, 10, 27],[11, 15, 14, 13, 9, 10, 19, 13, 14, 13],[10, 8, 12, 13, 8, 3, 7, 11, 10, 9],[9, 6, 6, 3, 10, 9, 9, 13, 14, 13],[4, 10, 13, 0, 12, 10, 17, 11, 13, 14],[13, 10, 13, 16, 8, 9, 12, 11, 5, 9]
]# 创建DataFrame
sales_data_df = pd.DataFrame(sales_data, index=dates, columns=dishes)
sales_data_df
百合酱蒸凤爪翡翠蒸香茜饺金银蒜汁蒸排骨乐膳真味鸡蜜汁焗餐包生炒菜心铁板酸菜豆腐香煎韭菜饺香煎萝卜糕原汁原味菜心
2015/1/1176824131318101027
2015/1/21115141391019131413
2015/1/3108121383711109
2015/1/496631099131413
2015/1/5410130121017111314
2015/1/61310131689121159
# 计算Spearman相关系数
spearman_corr = sales_data_df.corr(method='spearman')
spearman_corr
百合酱蒸凤爪翡翠蒸香茜饺金银蒜汁蒸排骨乐膳真味鸡蜜汁焗餐包生炒菜心铁板酸菜豆腐香煎韭菜饺香煎萝卜糕原汁原味菜心
百合酱蒸凤爪1.000000-0.0882730.0289890.985611-0.0289890.3236690.371429-0.462910-0.5296410.029424
翡翠蒸香茜饺-0.0882731.0000000.985184-0.179124-0.4030300.0454550.4413670.3337120.090909-0.272727
金银蒜汁蒸排骨0.0289890.9851841.000000-0.058824-0.3382350.1492700.5217940.1878670.000000-0.194051
乐膳真味鸡0.985611-0.179124-0.0588241.000000-0.0735290.2239060.231908-0.547946-0.626936-0.029854
蜜汁焗餐包-0.028989-0.403030-0.338235-0.0735291.0000000.8209870.492805-0.3131120.3134680.985184
生炒菜心0.3236690.0454550.1492700.2239060.8209871.0000000.882735-0.3178210.1818180.893939
铁板酸菜豆腐0.3714290.4413670.5217940.2319080.4928050.8827351.000000-0.0308610.2648200.617914
香煎韭菜饺-0.4629100.3337120.187867-0.547946-0.313112-0.317821-0.0308611.0000000.762770-0.317821
香煎萝卜糕-0.5296410.0909090.000000-0.6269360.3134680.1818180.2648200.7627701.0000000.318182
原汁原味菜心0.029424-0.272727-0.194051-0.0298540.9851840.8939390.617914-0.3178210.3181821.000000
spearman_corr['百合酱蒸凤爪']
百合酱蒸凤爪     1.000000
翡翠蒸香茜饺    -0.088273
金银蒜汁蒸排骨    0.028989
乐膳真味鸡      0.985611
蜜汁焗餐包     -0.028989
生炒菜心       0.323669
铁板酸菜豆腐     0.371429
香煎韭菜饺     -0.462910
香煎萝卜糕     -0.529641
原汁原味菜心     0.029424
Name: 百合酱蒸凤爪, dtype: float64

结论:

相关系数越接近1,表示相关性更大,越接近0,则表示无相关性,如果是负数,则更加无相关性。

# 计算Pearson相关系数
Pearson_corr = sales_data_df.corr()
Pearson_corr
百合酱蒸凤爪翡翠蒸香茜饺金银蒜汁蒸排骨乐膳真味鸡蜜汁焗餐包生炒菜心铁板酸菜豆腐香煎韭菜饺香煎萝卜糕原汁原味菜心
百合酱蒸凤爪1.000000-0.215108-0.2727300.9489470.0441370.3239760.140652-0.340168-0.4944330.524731
翡翠蒸香茜饺-0.2151081.0000000.827769-0.077693-0.3676470.0180510.4858790.4117060.154122-0.376388
金银蒜汁蒸排骨-0.2727300.8277691.000000-0.021189-0.413919-0.2453270.282654-0.050637-0.214834-0.485254
乐膳真味鸡0.948947-0.077693-0.0211891.0000000.0108590.2148590.207623-0.492837-0.5588960.478112
蜜汁焗餐包0.044137-0.367647-0.4139190.0108591.0000000.7253240.585705-0.3892490.3302890.860811
生炒菜心0.3239760.018051-0.2453270.2148590.7253241.0000000.795932-0.0993810.1229770.741747
铁板酸菜豆腐0.1406520.4858790.2826540.2076230.5857050.7959321.000000-0.0970780.2402550.580441
香煎韭菜饺-0.3401680.411706-0.050637-0.492837-0.389249-0.099381-0.0970781.0000000.612826-0.430007
香煎萝卜糕-0.4944330.154122-0.214834-0.5588960.3302890.1229770.2402550.6128261.0000000.138999
原汁原味菜心0.524731-0.376388-0.4852540.4781120.8608110.7417470.580441-0.4300070.1389991.000000

3.2 Python主要数据探索函数

数据探索的库主要是Pandas和Matplotlib。

常用统计特征函数:

  • sum() 计算数据样本的总和
  • mean() 计算数据样本的算术平均数
  • var() 计算数据样本的方差
  • std() 计算数据样本的标准差
  • corr() 计算数据样本的Spearman(Pearson)相关系数矩阵
  • cov() 计算数据样本的协方差矩阵
  • skew() 计算数据样本值的偏度(三阶矩)
  • kurt() 计算数据样本值的偏度(四阶矩)
  • describe() 给出样本的基本描述

拓展统计特征函数:

  • cumsum() 依次给出前1、2、3...、n个数的和

  • cumprod() 依次给出前1、2、3...、n个数的积

  • cummax() 依次给出前1、2、3...、n个数的最大值

  • cummin() 依次给出前1、2、3...、n个数的最小值

  • rolling_window.sum()

  • rolling_window.mean()

  • rolling_window.var()

  • rolling_window.std()

  • rolling_window.corr()

  • rolling_window.cov()

  • rolling_window.skew()

  • rolling_window.kurt()

rolling_window.sum()

import pandas as pd# 假设我们有一个DataFrame,其中包含了按日期索引的时间序列数据
data = {'date': pd.date_range(start='2021-01-01', periods=5, freq='D'),'value': [1, 2, 3, 4, 5]
}
df = pd.DataFrame(data).set_index('date')# 计算窗口大小为2的滚动求和,依次对相邻两项求和
rolling_window = df['value'].rolling(window=2)
rolling_sum = rolling_window.sum()rolling_sum
date
2021-01-01    NaN
2021-01-02    3.0
2021-01-03    5.0
2021-01-04    7.0
2021-01-05    9.0
Name: value, dtype: float64

统计作图函数:

  • plot() 折线图
  • pie() 饼图
  • hist() 直方图
  • boxplot() 箱型图
  • plot(logy=True) 绘制y轴的对数图形
  • plot(yerr=error) 绘制误差条形图

plot(yerr=error)

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt# 生成一个随机误差数组
error = np.abs(np.random.randn(10))  # 确保误差为正值# 生成一个正弦波形的Series
y = pd.Series(np.sin(np.arange(10)))# 使用plot方法绘制正弦波形图
plt.plot(y.index, y, '-o')  # 使用 '-o' 格式,表示用线段和圆点绘制# 使用errorbar添加误差条
plt.errorbar(y.index, y, yerr=error, fmt='none', ecolor='red', capsize=5)# 显示图表
plt.show()

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt# 生成一个随机误差矩阵,其形状与DataFrame的列数相同
error = np.abs(np.random.randn(10, 2))  # 假设DataFrame有两列# 生成一个包含正弦和余弦值的DataFrame
x = np.arange(10)
data = pd.DataFrame({'sin': np.sin(x),'cos': np.cos(x)
})# 设置绘图参数
plt.figure(figsize=(10, 6))# 为DataFrame的每一列绘制带有误差条的线
for column in data.columns:plt.errorbar(x, data[column], yerr=error[:, data.columns.get_loc(column)], fmt='-o', label=column, capsize=5)# 添加图例
plt.legend()# 显示图表
plt.show()

案例:股票收益率的波动性分析

假设你是一位金融分析师,正在研究某科技公司股票的历史表现,并希望评估其收益率的波动性。你收集了该公司过去一年内每个交易日的收盘价,并计算了每日的收益率。为了更直观地展示这些数据,你决定使用误差条形图。

步骤:

  1. 数据收集:收集过去一年内,每个交易日的收盘价。
  2. 计算收益率:计算每个交易日的收益率。收益率可以通过以下公式计算:
    \(收益率=\frac{今日收盘价−昨日收盘价}{昨日收盘价}\)
  3. 计算统计量:计算收益率的均值、标准差等统计量。
  4. 绘制误差条形图:使用误差条形图展示每日收益率的分布情况,误差条表示标准差。
import pandas as pd
import matplotlib.pyplot as plt# 假设dataframe 'df' 包含过去一年每个交易日的收盘价
df = pd.read_excel(f'D:/Notebook/excel/300059_close.xls')
df = df[0:100]
# 计算每日收益率
df['return'] = df['close'].pct_change()# 计算每日收益率的均值和标准差
mean_return = df['return'].mean()
std_return = df['return'].std()# 绘制误差条形图
plt.figure(figsize=(20, 6))
plt.errorbar(df.index, df['return'], yerr=std_return, fmt='none', ecolor='gray', capsize=5)
plt.axhline(y=mean_return, color='r', linestyle='--', label='收益率的均值')plt.title('带有标准差误差条的每日股票收益率图')
plt.xlabel('交易日')
plt.ylabel('收益率')
plt.legend()
plt.show()

df
dateclosereturn
02010-03-190.720866NaN
12010-03-220.7930140.100086
22010-03-230.8042560.014177
32010-03-240.8486080.055146
42010-03-250.8620740.015868
............
952010-08-100.669737-0.051966
962010-08-110.6755660.008704
972010-08-120.664776-0.015972
982010-08-130.6800310.022948
992010-08-160.6924340.018238

100 rows × 3 columns

  • 均值:

表示收益率的平均水平,可以作为评估股票长期表现的一个指标。

  • 误差条:

表示收益率的波动性。较长的误差条表明在某些交易日,股票的收益波动较大,这可能意味着较高的风险。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/707616.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core Web中使用AutoMapper进行对象映射

前言 在日常开发中,我们常常需要将一个对象映射到另一个对象,这个过程中可能需要编写大量的重复性代码,如果每次都手动编写,不仅会影响开发效率,而且当项目越来越复杂、庞大的时候还容易出现错误。为了解决这个问题,对象映射库就随之而出了,这些库可以自动完成对象之间的…

Socket层

【一】什么是socketSocket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。所以,我们无需深…

金融系统数据同步方案哪家最强,了解一下!

金融系统数据同步是金融行业信息化和数据化发展的关键组成部分,它对于保障数据安全、提升系统性能和满足日益增长的数据时效性要求至关重要。以下是一些金融系统中数据同步的关键应用场景和需求:1、多数据中心操作:金融机构通常在多个数据中心运行,需要确保数据在这些中心之…

Dapr 与 .NET Aspire 结合使用获得无与伦比的本地开发体验

Dapr 提供了一组构建块,用于抽象分布式系统中常用的概念。这包括服务、缓存、工作流、复原能力、机密管理等之间的安全同步和异步通信。不必自己实现这些功能,可以消除样板,降低复杂性,并允许您专注于开发业务功能。在您的时间有限并且您只想进行实验的情况下,在Dapr初始设…

网络架构和网络通信

【一】常见的网络架构模式 【1】CS模型C是英文单词“Client”的首字母,即客户端的意思 C/S就是“Client/Server”的缩写,即“客户端/服务器”模式。例如:拼多多APP、PC上的有道云笔记等等【2】BS模型B是英文单词“Browser”的首字母,即浏览器的意思; S是英文单词“Server”…

记录仪测评 记录仪测评设置4k结果1080

设置4K 实际效果1080不到记录仪测评设置4k结果1080 https://baijiahao.baidu.com/builder/preview/s?id=1799258600924107729 LOK00018.AVI音频编码信息ID : 1格式 : PCM格式参数设置, Endianness : Little格式参数设置, Sign : Signed编解码器ID : 1编解码器ID/Hint : Micros…

mpdf增加字体并进行使用

1、先将字体复制到目录:\vendor\mpdf\mpdf\ttfonts2、再修改文件\vendor\mpdf\mpdf\src\Config\FontVariables.php,对照已经添加的simsun,simkai,simhei,fangzhenweibei,fangzhenheiti等字体进行增加即可。3、再在需要设置字体的文字加上font-family:fangzhenweibei;样式…

初识上位机(下):C#读写PLC数据块数据

作为一个工业自动化领域的程序员,不懂点PLC和上位机,貌似有点说不过去。这里我用两篇小文带你快速进入上位机开发领域。上一篇,我们搭建了一个PLC的模拟仿真环境,本篇我们使用C#开发一个简单的PLC数据读取和写入的应用程序。大家好,我是Edison。 作为一个工业自动化领域的…

Markdown Editor 好用的工具

必要要记录一下,下次好找到。 Office Viewer(Markdown Editor) 好用的工具。 很适合我的。

linux开发和部署lazarus中间件

linux开发和部署lazarus中间件linux开发和部署lazarus中间件 1)linux开发的编译中间件2)linux部署中间件 本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/18197098

dotnet 设置 X11 建立窗口之间的父子关系

在 X11 里面有和 Win32 类似的窗口之间的关系机制,如 Owner-Owned 关系,以及 Parent-Child 关系。本文将告诉大家如何进行设置以及其行为本文将大量使用到 new bing 提供的回答内容,感谢 new bing 人工智能提供的内容 Owner-Owned 关系在这种关系中,一个窗口可以被另一个窗…

学习 Avalonia 框架笔记 设置 X11 窗口从最小化状态还原为正常状态

本文记录在 dotnet 里面如何设置 X11 窗口从最小化状态还原为正常状态本文属于学习 Avalonia 框架系列笔记,更多请参阅 博客导航 核心设置方法如下 /// <summary> /// 代码从 Avalonia 抄的 https://github.com/AvaloniaUI/Avalonia/blob/5e323b8fb1e2ca36550ca6fe678e4…