Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.24 KB | None | 0 0
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 1,
  6. "metadata": {},
  7. "outputs": [],
  8. "source": [
  9. "import pandas as pd"
  10. ]
  11. },
  12. {
  13. "cell_type": "code",
  14. "execution_count": 2,
  15. "metadata": {},
  16. "outputs": [
  17. {
  18. "data": {
  19. "text/plain": [
  20. "556.8374181775592"
  21. ]
  22. },
  23. "execution_count": 2,
  24. "metadata": {},
  25. "output_type": "execute_result"
  26. }
  27. ],
  28. "source": [
  29. "def present_value(fv, i_rate, n_periods):\n",
  30. " return fv / (1 + i_rate) ** n_periods\n",
  31. "\n",
  32. "present_value(1000, 0.05, 12)"
  33. ]
  34. },
  35. {
  36. "cell_type": "code",
  37. "execution_count": 3,
  38. "metadata": {},
  39. "outputs": [],
  40. "source": [
  41. "df = pd.DataFrame([(1000, 0.05, 12), (1000, 0.07, 12), (1000, 0.09, 12), (500, 0.02, 24)],\n",
  42. " columns=['fv', 'i_rate', 'n_periods'])"
  43. ]
  44. },
  45. {
  46. "cell_type": "code",
  47. "execution_count": 4,
  48. "metadata": {},
  49. "outputs": [
  50. {
  51. "data": {
  52. "text/html": [
  53. "<div>\n",
  54. "<style scoped>\n",
  55. " .dataframe tbody tr th:only-of-type {\n",
  56. " vertical-align: middle;\n",
  57. " }\n",
  58. "\n",
  59. " .dataframe tbody tr th {\n",
  60. " vertical-align: top;\n",
  61. " }\n",
  62. "\n",
  63. " .dataframe thead th {\n",
  64. " text-align: right;\n",
  65. " }\n",
  66. "</style>\n",
  67. "<table border=\"1\" class=\"dataframe\">\n",
  68. " <thead>\n",
  69. " <tr style=\"text-align: right;\">\n",
  70. " <th></th>\n",
  71. " <th>fv</th>\n",
  72. " <th>i_rate</th>\n",
  73. " <th>n_periods</th>\n",
  74. " </tr>\n",
  75. " </thead>\n",
  76. " <tbody>\n",
  77. " <tr>\n",
  78. " <td>0</td>\n",
  79. " <td>1000</td>\n",
  80. " <td>0.05</td>\n",
  81. " <td>12</td>\n",
  82. " </tr>\n",
  83. " <tr>\n",
  84. " <td>1</td>\n",
  85. " <td>1000</td>\n",
  86. " <td>0.07</td>\n",
  87. " <td>12</td>\n",
  88. " </tr>\n",
  89. " <tr>\n",
  90. " <td>2</td>\n",
  91. " <td>1000</td>\n",
  92. " <td>0.09</td>\n",
  93. " <td>12</td>\n",
  94. " </tr>\n",
  95. " <tr>\n",
  96. " <td>3</td>\n",
  97. " <td>500</td>\n",
  98. " <td>0.02</td>\n",
  99. " <td>24</td>\n",
  100. " </tr>\n",
  101. " </tbody>\n",
  102. "</table>\n",
  103. "</div>"
  104. ],
  105. "text/plain": [
  106. " fv i_rate n_periods\n",
  107. "0 1000 0.05 12\n",
  108. "1 1000 0.07 12\n",
  109. "2 1000 0.09 12\n",
  110. "3 500 0.02 24"
  111. ]
  112. },
  113. "execution_count": 4,
  114. "metadata": {},
  115. "output_type": "execute_result"
  116. }
  117. ],
  118. "source": [
  119. "df"
  120. ]
  121. },
  122. {
  123. "cell_type": "code",
  124. "execution_count": 13,
  125. "metadata": {},
  126. "outputs": [],
  127. "source": [
  128. "for (index, row) in df.iterrows():\n",
  129. " df.loc[index, 'pv'] = present_value(row.fv, row.i_rate, row.n_periods)"
  130. ]
  131. },
  132. {
  133. "cell_type": "code",
  134. "execution_count": 15,
  135. "metadata": {},
  136. "outputs": [],
  137. "source": [
  138. "df['pv2'] = df.apply(lambda r: present_value(r['fv'], r['i_rate'], r['n_periods']), axis=1)"
  139. ]
  140. },
  141. {
  142. "cell_type": "code",
  143. "execution_count": 16,
  144. "metadata": {},
  145. "outputs": [],
  146. "source": [
  147. "df['pv3'] = df['fv']/(1 + df['i_rate']) ** df['n_periods']"
  148. ]
  149. },
  150. {
  151. "cell_type": "code",
  152. "execution_count": 17,
  153. "metadata": {},
  154. "outputs": [
  155. {
  156. "data": {
  157. "text/html": [
  158. "<div>\n",
  159. "<style scoped>\n",
  160. " .dataframe tbody tr th:only-of-type {\n",
  161. " vertical-align: middle;\n",
  162. " }\n",
  163. "\n",
  164. " .dataframe tbody tr th {\n",
  165. " vertical-align: top;\n",
  166. " }\n",
  167. "\n",
  168. " .dataframe thead th {\n",
  169. " text-align: right;\n",
  170. " }\n",
  171. "</style>\n",
  172. "<table border=\"1\" class=\"dataframe\">\n",
  173. " <thead>\n",
  174. " <tr style=\"text-align: right;\">\n",
  175. " <th></th>\n",
  176. " <th>fv</th>\n",
  177. " <th>i_rate</th>\n",
  178. " <th>n_periods</th>\n",
  179. " <th>pv</th>\n",
  180. " <th>pv2</th>\n",
  181. " <th>pv3</th>\n",
  182. " </tr>\n",
  183. " </thead>\n",
  184. " <tbody>\n",
  185. " <tr>\n",
  186. " <td>0</td>\n",
  187. " <td>1000</td>\n",
  188. " <td>0.05</td>\n",
  189. " <td>12</td>\n",
  190. " <td>556.837418</td>\n",
  191. " <td>556.837418</td>\n",
  192. " <td>556.837418</td>\n",
  193. " </tr>\n",
  194. " <tr>\n",
  195. " <td>1</td>\n",
  196. " <td>1000</td>\n",
  197. " <td>0.07</td>\n",
  198. " <td>12</td>\n",
  199. " <td>444.011959</td>\n",
  200. " <td>444.011959</td>\n",
  201. " <td>444.011959</td>\n",
  202. " </tr>\n",
  203. " <tr>\n",
  204. " <td>2</td>\n",
  205. " <td>1000</td>\n",
  206. " <td>0.09</td>\n",
  207. " <td>12</td>\n",
  208. " <td>355.534725</td>\n",
  209. " <td>355.534725</td>\n",
  210. " <td>355.534725</td>\n",
  211. " </tr>\n",
  212. " <tr>\n",
  213. " <td>3</td>\n",
  214. " <td>500</td>\n",
  215. " <td>0.02</td>\n",
  216. " <td>24</td>\n",
  217. " <td>310.860744</td>\n",
  218. " <td>310.860744</td>\n",
  219. " <td>310.860744</td>\n",
  220. " </tr>\n",
  221. " </tbody>\n",
  222. "</table>\n",
  223. "</div>"
  224. ],
  225. "text/plain": [
  226. " fv i_rate n_periods pv pv2 pv3\n",
  227. "0 1000 0.05 12 556.837418 556.837418 556.837418\n",
  228. "1 1000 0.07 12 444.011959 444.011959 444.011959\n",
  229. "2 1000 0.09 12 355.534725 355.534725 355.534725\n",
  230. "3 500 0.02 24 310.860744 310.860744 310.860744"
  231. ]
  232. },
  233. "execution_count": 17,
  234. "metadata": {},
  235. "output_type": "execute_result"
  236. }
  237. ],
  238. "source": [
  239. "df"
  240. ]
  241. },
  242. {
  243. "cell_type": "code",
  244. "execution_count": 8,
  245. "metadata": {},
  246. "outputs": [
  247. {
  248. "name": "stdout",
  249. "output_type": "stream",
  250. "text": [
  251. "1.18 ms ± 58.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n"
  252. ]
  253. }
  254. ],
  255. "source": [
  256. "%timeit df.apply(lambda r: present_value(r['fv'], r['i_rate'], r['n_periods']), axis=1) "
  257. ]
  258. },
  259. {
  260. "cell_type": "code",
  261. "execution_count": 9,
  262. "metadata": {},
  263. "outputs": [
  264. {
  265. "name": "stdout",
  266. "output_type": "stream",
  267. "text": [
  268. "493 µs ± 45.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n"
  269. ]
  270. }
  271. ],
  272. "source": [
  273. "%timeit df['fv']/(1 + df['i_rate']) ** df['n_periods'] "
  274. ]
  275. },
  276. {
  277. "cell_type": "code",
  278. "execution_count": null,
  279. "metadata": {},
  280. "outputs": [],
  281. "source": []
  282. }
  283. ],
  284. "metadata": {
  285. "kernelspec": {
  286. "display_name": "Python 3",
  287. "language": "python",
  288. "name": "python3"
  289. },
  290. "language_info": {
  291. "codemirror_mode": {
  292. "name": "ipython",
  293. "version": 3
  294. },
  295. "file_extension": ".py",
  296. "mimetype": "text/x-python",
  297. "name": "python",
  298. "nbconvert_exporter": "python",
  299. "pygments_lexer": "ipython3",
  300. "version": "3.7.2"
  301. }
  302. },
  303. "nbformat": 4,
  304. "nbformat_minor": 2
  305. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement