选择长期投资,还是短期获利?
巴菲特有句名言,大意是:复利是第八大奇迹。结合股神的投资理念,这句话意思大概可解释为,做时间的朋友,享受价值投资带来的超额收益。 复利的概念其实简单,可用以下公式表示。 $$ F_l = P(1+i_l)^n \tag{1} $$ $F_l$代表最终收益;$P$代表期初的投入;$i_l$代表年平均收益率(这里假定每年收益率相同);$n$代表投资时间,一般按年数,也可月数等其他计息周期。 ...
巴菲特有句名言,大意是:复利是第八大奇迹。结合股神的投资理念,这句话意思大概可解释为,做时间的朋友,享受价值投资带来的超额收益。 复利的概念其实简单,可用以下公式表示。 $$ F_l = P(1+i_l)^n \tag{1} $$ $F_l$代表最终收益;$P$代表期初的投入;$i_l$代表年平均收益率(这里假定每年收益率相同);$n$代表投资时间,一般按年数,也可月数等其他计息周期。 ...
昨天跟同事闲聊,上周末西安下雨,气温大概10℃左右,由于还没停止供暖,所以开窗睡觉非常舒适。进而聊到,感觉上去年一年西安的气候都比往年要舒适。记得去年有篇文章,题目大意是「西北变热变湿,西安恐成最大赢家」。于是查找西安的天气数据,打算分析下。 从NOAA网站上找到1951年至2020年的西安月度气象数据,1951年至2005年的数据来自西安气象站,2006年之后的来自泾河气象站,两者距离不远,都是监测西安市的。 ...
title: 学习 pandas [02]: 二进制操作 slug: er-jin-zhi-cao-zuo date: 2021-1-23 tags: Pandas Jupyter python category: 数据分析 link: description: type: text 二进制操作 Pandas数据结构之间执行二进制操作,要注意下列两个关键点: DataFrame与Series之间的广播机制; 计算中的缺失值处理。 加、减、乘、除、取模 DataFrame支持以下运算操作中对Series进行广播: add():加 sub():减 mul():乘 div():除 radd() rsub() 在以上方法使用中,通过axis参数,指定沿index或columns广播。 ...
前几天上班用的计算器彻底没电了,无法开机。型号是CASIO fx-82ES,背盖是一个整体,没给电池区单独设开盖。 因为自己的笔记本电脑也是整体后盖,拆起来难度上天,所以对拆这种整体后盖的电子设备有点忐忑,怕拆开没本事装回去。但事实证明,这个CASIO计算器设计得很方便更换电池。 计算器的螺丝是十字口,先用一个某宝买东西送的十字螺丝刀,结果没拧开,反倒螺丝刀的十字刃被磨平了。果然送的没好货。于是找出多年前买的一套刀头。 ...
title: 学习 pandas [01]: 数据结构 slug: series-and-dataframe date: 2020-12-27 tags: Pandas Jupyter python category: 数据分析 link: description: type: text 数据结构 pandas的数据类型主要有: Series,类似一维数组 DataFrame,类似二维数组 Series 创建Series 1 pd.Series(data, index=index) data:可以是字典、一维数组、标量 index:索引列表,可以理解为行标签,根据Data的类型而不同。 通过字典创建Series 1 2 3 4 5 6 7 import numpy as np import pandas as pd # 通过字典创建,自动采用键值作为索引,若不指定index,则顺序同字典 d = {'b': 1, 'a': 0, 'c': 2} s = pd.Series(d) s b 1 a 0 c 2 dtype: int64 1 2 3 4 # 通过字典创建,自动采用键值作为索引,若指定index(包含键值),则顺序同index # index中若含有字典中不存在的键值,则Series中对应的值为NaN s = pd.Series(d, index=['a', 'b', 'c', 'd']) s a 0.0 b 1.0 c 2.0 d NaN dtype: float64 通过一维数组创建Series 1 2 3 4 5 l = np.random.randn(6) # 若不指定index,则自动生成数值型索引 s = pd.Series(l) s 0 0.215224 1 0.803700 2 1.141428 3 0.526450 4 0.577533 5 1.051918 dtype: float64 1 2 3 # 若指定index,则长度必须与数组相同 s = pd.Series(l, index=['a', 'b', 'c', 'd', 'e', 'f']) s a 0.215224 b 0.803700 c 1.141428 d 0.526450 e 0.577533 f 1.051918 dtype: float64 通过标量值创建Series 此方法创建出的Series,每行值都相同。 ...
title: 学习 seaborn [05]: 调色板 slug: color-seaborn date: 2020-12-14 tags: seaborn python category: 数据分析 link: description: type: text 选择调色板 调色板是一组颜色搭配方案,绘图时候程序从中选取颜色进行数据可视化。调色板中颜色之间的色相、饱和度、明度等差异,区别出不同系列的数据关系,因此调色板比其他元素更加影响绘图的视觉效果。 seaborn提供了一些现成的配色方案,也可以利用其提供的函数自定义调色板。 调色板分类 定性调色板:一组在视觉上有差异的颜色,用于区分不具有内在顺序的离散数据; 顺序调色板:一组视觉温度递增或递减的颜色,一般是单一色相,也可以是多种色相,用于当数据集的范围从相对低值(不感兴趣)到相对高值(很感兴趣)时; 发散调色板:一组颜色的中间位置颜色的视觉温度最亮或最暗,然后分别向两端递增或递减,用于当数据集的低值和高值都很重要,且数据集中有明确定义的中点时。 生成调色板的函数 可生成三种调色板的函数 color_palette():生成调色盘,接受所有的seaborn调色板或者matplotlib Colormap或者Color Brewer库的配色方案,返回RGB元组的列表; set_palette():接受与color_palette()相同参数,设置所有图像的默认配色方案; xkcd_rgb():使用xkcd颜色名字设置单一颜色; xkcd_palette():使用xkcd颜色名字生成调色板,适用于各种调色板; choose_colorbrewer_palette():通过交互式组件辅助进行Color Brewer库的配色方案选择,适用于各种调色板,只能在Jupyter Notebook中使用; 用于生成定性调色板的函数 hls_palette():使用hls颜色空间生成间距相等的颜色(色调变化,明度和饱和度不变),适用于定性调色板; husl_palette():使用HSLuv颜色空间生成间距相等的颜色,比上述hls更符合人眼视觉感受,适用于定性调色板; 用于生成顺序调色板的函数 cubehelix_palette():使用cubehelix调色板系统生成配色方案,适合黑白打印,且对色盲友好,适用于顺序调色板; choose_cubehelix_palette():通过交互式组件辅助进行cubehelix调色板的配色方案选择,只能在Jupyter Notebook中使用; light_palette()和dark_palette():指定一个颜色,会由明向暗或由暗向明生成一组颜色,适用于顺序调色板; 用于生成发散调色板的函数 diverging_palette():用来创建发散调色板; choose_diverging_palette():通过交互式组件辅助进行发散调色板的配色方案选择,使用HSLuv颜色空间,只能在Jupyter Notebook中使用; 生成调色板的方式 seaborn中生成调色板的方式大致有三种: ...
title: 学习 seaborn [04]: 修改样式、移动座标轴 slug: beautify-seaborn date: 2020-12-11 16:23:05 tags: seaborn python category: 数据分析 link: description: type: text 控制图像的美学样式 相比与matplotlib详细的样式设置,seaborn提供了成套的样式主题可供直接使用,同时提供高级设置接口供用户自定义主题。 以装修房子比喻,用matplotlib就像全部考自己装修,窗台、地砖、墙壁等细节都要自己考虑,费时费力但高度可定制化。而用seaborn相当于从装修公司已设计好的装修方案中挑选一个,然后还能在此基础进行部分的修改定制。 ...
title: 学习 seaborn [03]: 线性回归图 slug: lmplot date: 2020-12-9 tags: seaborn python category: 数据分析 link: description: type: text 线性关系可视化 此线性可视化并非统计关系中的折线图,而是excel做图中的趋势线概念,对x、y关系进行线性拟合得到关系式,对关系式的绘图。 seaborn的线性可视化不直接提供拟合关系式的各具体参数,只绘制出趋势线和置信区间,从而引导和帮助进行数据关系探索。 主要用到两个函数: lmplot():FacetGrid级函数,可绘制多子图;将data作为必须参数,x和y变量必须被指定为字符串。 regplot():轴级函数。x和y可以是简单的 numpy 数组,pandas Series对象,或者作为对传递给data的 pandas DataFrame对象。 1 2 3 4 5 6 7 8 import seaborn as sns import pandas as pd import numpy as np %matplotlib inline sns.set() tips = pd.read_csv('seaborn-data-master/tips.csv') display(tips) total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4 ... ... ... ... ... ... ... ... 239 29.03 5.92 Male No Sat Dinner 3 240 27.18 2.00 Female Yes Sat Dinner 2 241 22.67 2.00 Male Yes Sat Dinner 2 242 17.82 1.75 Male No Sat Dinner 2 243 18.78 3.00 Female No Thur Dinner 2 244 rows × 7 columns ...
可视化分类数据 可视化分类数据的统一FacetGrid图级接口为catplot()函数,通过kind参数,可以选择轴级函数有: 分类散点图: stripplot() (with kind=“strip”; the default) swarmplot() (with kind=“swarm”) 分类分布图: boxplot() (with kind=“box”) violinplot() (with kind=“violin”) boxenplot() (with kind=“boxen”) 分类估计图: pointplot() (with kind=“point”) barplot() (with kind=“bar”) countplot() (with kind=“count”) 条形图 绘制两种不同的条形图: barplot() 或 catplot(kind=‘bar’):x为分类,y为该分类下的数据的估计值;需要给x、y赋值。 countplot() 或 catplot(kind=‘count’):x为分类,y为该分类下的数据的数量;只需给x赋值。 两种图形的其他参数使用方法一致。 ...