├── .gitignore ├── Exploring 67 years of LEGO └── notebook.ipynb ├── Exploring the Bitcoin cryptocurrency market ├── datasets │ └── coinmarketcap_06122017.csv └── notebook.ipynb ├── Exploring the evolution of Linux ├── datasets │ ├── git_log.gz │ └── git_log_excerpt.csv ├── img │ ├── ATTRIBUTION_tux_png.txt │ └── tux.png └── notebook.ipynb ├── Introduction to DataCamp Projects └── notebook.ipynb └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | ./.ipynb_checkpoints/* 3 | -------------------------------------------------------------------------------- /Exploring 67 years of LEGO/notebook.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat_minor":2,"cells":[{"source":"## Introduction\n

Everyone loves Lego (unless you ever stepped on one). Did you know by the way that \"Lego\" was derived from the Danish phrase leg godt, which means \"play well\"? Unless you speak Danish, probably not.

\n

In this project, we will analyze a fascinating dataset on every single lego block that has ever been built!

\n

\"lego\"

","cell_type":"markdown","metadata":{"dc":{"key":"1d0b086e6c"},"run_control":{"frozen":true},"tags":["context"],"deletable":false,"editable":false}},{"source":"# Nothing to do here","execution_count":222,"cell_type":"code","outputs":[],"metadata":{"collapsed":true,"trusted":true,"tags":["sample_code"],"dc":{"key":"1d0b086e6c"}}},{"source":"## Reading Data\n

This comprehensive database of lego blocks is provided by Rebrickable. The data is available as csv files and the schema is shown below.

\n

\"schema\"

\n

Let us start by reading in the colors data to get a sense of the diversity of lego sets!

","cell_type":"markdown","metadata":{"dc":{"key":"044b2cef41"},"run_control":{"frozen":true},"tags":["context"],"deletable":false,"editable":false}},{"source":"# Import modules\nimport pandas as pd\n\n# Read colors data\ncolors = pd.read_csv('datasets/colors.csv')\n\n# Print the first few rows\ncolors.head()","execution_count":224,"cell_type":"code","outputs":[{"output_type":"execute_result","execution_count":224,"metadata":{},"data":{"text/html":"
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idnamergbis_trans
0-1Unknown0033B2f
10Black05131Df
21Blue0055BFf
32Green237841f
43Dark Turquoise008F9Bf
\n
","text/plain":" id name rgb is_trans\n0 -1 Unknown 0033B2 f\n1 0 Black 05131D f\n2 1 Blue 0055BF f\n3 2 Green 237841 f\n4 3 Dark Turquoise 008F9B f"}}],"metadata":{"dc":{"key":"044b2cef41"},"trusted":true,"tags":["sample_code"]}},{"source":"## Exploring Colors\n

Now that we have read the colors data, we can start exploring it! Let us start by understanding the number of colors available.

","cell_type":"markdown","metadata":{"dc":{"key":"15c1e2ce38"},"run_control":{"frozen":true},"tags":["context"],"deletable":false,"editable":false}},{"source":"# How many distinct colors are available?\nnum_colors = colors.id.count()\nprint(num_colors)","execution_count":226,"cell_type":"code","outputs":[{"output_type":"stream","name":"stdout","text":"135\n"}],"metadata":{"dc":{"key":"15c1e2ce38"},"trusted":true,"tags":["sample_code"]}},{"source":"## Transparent Colors in Lego Sets\n

The colors data has a column named is_trans that indicates whether a color is transparent or not. It would be interesting to explore the distribution of transparent vs. non-transparent colors.

","cell_type":"markdown","metadata":{"dc":{"key":"a5723ae5c2"},"run_control":{"frozen":true},"tags":["context"],"deletable":false,"editable":false}},{"source":"# colors_summary: Distribution of colors based on transparency\ncolors_summary = colors.groupby('is_trans').count()\nprint(colors_summary)","execution_count":228,"cell_type":"code","outputs":[{"output_type":"stream","name":"stdout","text":" id name rgb\nis_trans \nf 107 107 107\nt 28 28 28\n"}],"metadata":{"dc":{"key":"a5723ae5c2"},"trusted":true,"tags":["sample_code"]}},{"source":"## Explore Lego Sets\n

Another interesting dataset available in this database is the sets data. It contains a comprehensive list of sets over the years and the number of parts that each of these sets contained.

\n

\"sets_data\"

\n

Let us use this data to explore how the average number of parts in lego sets has varied over the years.

","cell_type":"markdown","metadata":{"dc":{"key":"c9d0e58653"},"run_control":{"frozen":true},"tags":["context"],"deletable":false,"editable":false}},{"source":"import matplotlib.pyplot as plt\n%matplotlib inline\n\n# Read sets data as `sets`\nsets = pd.read_csv('datasets/sets.csv')\n\n# Create a summary of average number of parts by year: `parts_by_year`\nparts_by_year = (sets.groupby('year').sum()/sets.groupby('year').count()).loc[:,['num_parts']]\n\n# Plot trends in average number of parts by year\nfig, axes = plt.subplots(figsize=(16,6))\nparts_by_year.plot.bar(ax=axes)\naxes.set_title(\"Average number of parts by year\", fontsize=24)\naxes.set_ylabel(\"Number of parts\")\naxes.legend_.remove()\nplt.show()","execution_count":230,"cell_type":"code","outputs":[{"output_type":"display_data","metadata":{},"data":{"image/png":"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\n","text/plain":""}}],"metadata":{"dc":{"key":"c9d0e58653"},"trusted":true,"tags":["sample_code"]}},{"source":"## Lego Themes Over Years\n

Lego blocks ship under multiple themes. Let us try to get a sense of how the number of themes shipped has varied over the years.

","cell_type":"markdown","metadata":{"dc":{"key":"266a3f390c"},"run_control":{"frozen":true},"tags":["context"],"deletable":false,"editable":false}},{"source":"# themes_by_year: Number of themes shipped by year\nthemes_by_year = sets.groupby(['year'], as_index=False).count().loc[:,['year', 'theme_id']]\nprint(themes_by_year.head(2))","execution_count":232,"cell_type":"code","outputs":[{"output_type":"stream","name":"stdout","text":" theme_id\nyear \n1950 7\n1953 4\n"}],"metadata":{"dc":{"key":"266a3f390c"},"trusted":true,"tags":["sample_code"]}},{"source":"## Wrapping It All Up!\n

Lego blocks offer an unlimited amoung of fun across ages. We explored some interesting trends around colors, parts and themes.

","cell_type":"markdown","metadata":{"dc":{"key":"a293e5076e"},"run_control":{"frozen":true},"tags":["context"],"deletable":false,"editable":false}},{"source":"# Nothing to do here","execution_count":234,"cell_type":"code","outputs":[],"metadata":{"collapsed":true,"trusted":true,"tags":["sample_code"],"dc":{"key":"a293e5076e"}}}],"nbformat":4,"metadata":{"language_info":{"codemirror_mode":{"version":3,"name":"ipython"},"name":"python","mimetype":"text/x-python","pygments_lexer":"ipython3","file_extension":".py","version":"3.5.2","nbconvert_exporter":"python"},"kernelspec":{"language":"python","name":"python3","display_name":"Python 3"}}} -------------------------------------------------------------------------------- /Exploring the Bitcoin cryptocurrency market/datasets/coinmarketcap_06122017.csv: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "bitcoin", 4 | "name": "Bitcoin", 5 | "symbol": "BTC", 6 | "rank": "1", 7 | "price_usd": "9202.81", 8 | "price_btc": "1.0", 9 | "24h_volume_usd": "8524490000.0", 10 | "market_cap_usd": "155002579123", 11 | "available_supply": "16842962.0", 12 | "total_supply": "16842962.0", 13 | "max_supply": "21000000.0", 14 | "percent_change_1h": "2.18", 15 | "percent_change_24h": "8.36", 16 | "percent_change_7d": "-18.38", 17 | "last_updated": "1517666669" 18 | }, 19 | { 20 | "id": "ethereum", 21 | "name": "Ethereum", 22 | "symbol": "ETH", 23 | "rank": "2", 24 | "price_usd": "970.766", 25 | "price_btc": "0.104803", 26 | "24h_volume_usd": "4208380000.0", 27 | "market_cap_usd": "94539217744.0", 28 | "available_supply": "97386206.0", 29 | "total_supply": "97386206.0", 30 | "max_supply": null, 31 | "percent_change_1h": "1.92", 32 | "percent_change_24h": "8.45", 33 | "percent_change_7d": "-10.17", 34 | "last_updated": "1517666653" 35 | }, 36 | { 37 | "id": "ripple", 38 | "name": "Ripple", 39 | "symbol": "XRP", 40 | "rank": "3", 41 | "price_usd": "0.935858", 42 | "price_btc": "0.00010103", 43 | "24h_volume_usd": "2610490000.0", 44 | "market_cap_usd": "36507086716.0", 45 | "available_supply": "39009215838.0", 46 | "total_supply": "99992725510.0", 47 | "max_supply": "100000000000", 48 | "percent_change_1h": "3.25", 49 | "percent_change_24h": "16.7", 50 | "percent_change_7d": "-22.9", 51 | "last_updated": "1517666641" 52 | }, 53 | { 54 | "id": "bitcoin-cash", 55 | "name": "Bitcoin Cash", 56 | "symbol": "BCH", 57 | "rank": "4", 58 | "price_usd": "1249.65", 59 | "price_btc": "0.134911", 60 | "24h_volume_usd": "535732000.0", 61 | "market_cap_usd": "21178021618.0", 62 | "available_supply": "16947163.0", 63 | "total_supply": "16947163.0", 64 | "max_supply": "21000000.0", 65 | "percent_change_1h": "2.28", 66 | "percent_change_24h": "10.83", 67 | "percent_change_7d": "-22.7", 68 | "last_updated": "1517666658" 69 | }, 70 | { 71 | "id": "cardano", 72 | "name": "Cardano", 73 | "symbol": "ADA", 74 | "rank": "5", 75 | "price_usd": "0.419372", 76 | "price_btc": "0.00004527", 77 | "24h_volume_usd": "1321480000.0", 78 | "market_cap_usd": "10873087426.0", 79 | "available_supply": "25927070538.0", 80 | "total_supply": "31112483745.0", 81 | "max_supply": "45000000000.0", 82 | "percent_change_1h": "4.74", 83 | "percent_change_24h": "27.57", 84 | "percent_change_7d": "-31.81", 85 | "last_updated": "1517666660" 86 | }, 87 | { 88 | "id": "neo", 89 | "name": "NEO", 90 | "symbol": "NEO", 91 | "rank": "6", 92 | "price_usd": "124.939", 93 | "price_btc": "0.0134883", 94 | "24h_volume_usd": "403081000.0", 95 | "market_cap_usd": "8121035000.0", 96 | "available_supply": "65000000.0", 97 | "total_supply": "100000000.0", 98 | "max_supply": null, 99 | "percent_change_1h": "2.14", 100 | "percent_change_24h": "10.59", 101 | "percent_change_7d": "-9.37", 102 | "last_updated": "1517666651" 103 | }, 104 | { 105 | "id": "litecoin", 106 | "name": "Litecoin", 107 | "symbol": "LTC", 108 | "rank": "7", 109 | "price_usd": "146.213", 110 | "price_btc": "0.015785", 111 | "24h_volume_usd": "513490000.0", 112 | "market_cap_usd": "8048979323.0", 113 | "available_supply": "55049683.0", 114 | "total_supply": "55049683.0", 115 | "max_supply": "84000000.0", 116 | "percent_change_1h": "5.84", 117 | "percent_change_24h": "16.36", 118 | "percent_change_7d": "-18.44", 119 | "last_updated": "1517666640" 120 | }, 121 | { 122 | "id": "stellar", 123 | "name": "Stellar", 124 | "symbol": "XLM", 125 | "rank": "8", 126 | "price_usd": "0.424037", 127 | "price_btc": "0.00004578", 128 | "24h_volume_usd": "289361000.0", 129 | "market_cap_usd": "7815525321.0", 130 | "available_supply": "18431234351.0", 131 | "total_supply": "103649583897", 132 | "max_supply": null, 133 | "percent_change_1h": "2.77", 134 | "percent_change_24h": "14.12", 135 | "percent_change_7d": "-32.04", 136 | "last_updated": "1517666644" 137 | }, 138 | { 139 | "id": "eos", 140 | "name": "EOS", 141 | "symbol": "EOS", 142 | "rank": "9", 143 | "price_usd": "9.96828", 144 | "price_btc": "0.00107617", 145 | "24h_volume_usd": "974585000.0", 146 | "market_cap_usd": "6434599919.0", 147 | "available_supply": "645507542.0", 148 | "total_supply": "900000000.0", 149 | "max_supply": "1000000000.0", 150 | "percent_change_1h": "2.62", 151 | "percent_change_24h": "9.32", 152 | "percent_change_7d": "-30.44", 153 | "last_updated": "1517666656" 154 | }, 155 | { 156 | "id": "nem", 157 | "name": "NEM", 158 | "symbol": "XEM", 159 | "rank": "10", 160 | "price_usd": "0.622588", 161 | "price_btc": "0.00006721", 162 | "24h_volume_usd": "46512200.0", 163 | "market_cap_usd": "5603291999.0", 164 | "available_supply": "8999999999.0", 165 | "total_supply": "8999999999.0", 166 | "max_supply": null, 167 | "percent_change_1h": "2.93", 168 | "percent_change_24h": "19.77", 169 | "percent_change_7d": "-32.04", 170 | "last_updated": "1517666646" 171 | }, 172 | { 173 | "id": "iota", 174 | "name": "IOTA", 175 | "symbol": "MIOTA", 176 | "rank": "11", 177 | "price_usd": "1.92541", 178 | "price_btc": "0.00020787", 179 | "24h_volume_usd": "74265000.0", 180 | "market_cap_usd": "5351735402.0", 181 | "available_supply": "2779530283.0", 182 | "total_supply": "2779530283.0", 183 | "max_supply": "2779530283.0", 184 | "percent_change_1h": "2.47", 185 | "percent_change_24h": "15.21", 186 | "percent_change_7d": "-20.73", 187 | "last_updated": "1517666656" 188 | }, 189 | { 190 | "id": "dash", 191 | "name": "Dash", 192 | "symbol": "DASH", 193 | "rank": "12", 194 | "price_usd": "629.62", 195 | "price_btc": "0.0679732", 196 | "24h_volume_usd": "96028300.0", 197 | "market_cap_usd": "4950160315.0", 198 | "available_supply": "7862140.0", 199 | "total_supply": "7862140.0", 200 | "max_supply": "18900000.0", 201 | "percent_change_1h": "2.9", 202 | "percent_change_24h": "19.24", 203 | "percent_change_7d": "-18.55", 204 | "last_updated": "1517666644" 205 | }, 206 | { 207 | "id": "monero", 208 | "name": "Monero", 209 | "symbol": "XMR", 210 | "rank": "13", 211 | "price_usd": "248.078", 212 | "price_btc": "0.0267822", 213 | "24h_volume_usd": "75465500.0", 214 | "market_cap_usd": "3889623381.0", 215 | "available_supply": "15679034.0", 216 | "total_supply": "15679034.0", 217 | "max_supply": null, 218 | "percent_change_1h": "2.64", 219 | "percent_change_24h": "10.78", 220 | "percent_change_7d": "-22.7", 221 | "last_updated": "1517666643" 222 | }, 223 | { 224 | "id": "tron", 225 | "name": "TRON", 226 | "symbol": "TRX", 227 | "rank": "14", 228 | "price_usd": "0.0454861", 229 | "price_btc": "0.00000491", 230 | "24h_volume_usd": "285219000.0", 231 | "market_cap_usd": "2990628858.0", 232 | "available_supply": "65748192475.0", 233 | "total_supply": "100000000000", 234 | "max_supply": null, 235 | "percent_change_1h": "7.74", 236 | "percent_change_24h": "20.91", 237 | "percent_change_7d": "-33.0", 238 | "last_updated": "1517666659" 239 | }, 240 | { 241 | "id": "vechain", 242 | "name": "VeChain", 243 | "symbol": "VEN", 244 | "rank": "15", 245 | "price_usd": "5.79326", 246 | "price_btc": "0.00062544", 247 | "24h_volume_usd": "120923000.0", 248 | "market_cap_usd": "2712675009.0", 249 | "available_supply": "468246723.0", 250 | "total_supply": "873378637.0", 251 | "max_supply": null, 252 | "percent_change_1h": "3.77", 253 | "percent_change_24h": "27.48", 254 | "percent_change_7d": "-17.96", 255 | "last_updated": "1517666658" 256 | }, 257 | { 258 | "id": "lisk", 259 | "name": "Lisk", 260 | "symbol": "LSK", 261 | "rank": "16", 262 | "price_usd": "22.7708", 263 | "price_btc": "0.00245832", 264 | "24h_volume_usd": "56027300.0", 265 | "market_cap_usd": "2679648525.0", 266 | "available_supply": "117679156.0", 267 | "total_supply": "117679156.0", 268 | "max_supply": null, 269 | "percent_change_1h": "3.16", 270 | "percent_change_24h": "19.55", 271 | "percent_change_7d": "1.97", 272 | "last_updated": "1517666649" 273 | }, 274 | { 275 | "id": "ethereum-classic", 276 | "name": "Ethereum Classic", 277 | "symbol": "ETC", 278 | "rank": "17", 279 | "price_usd": "24.1811", 280 | "price_btc": "0.00261056", 281 | "24h_volume_usd": "205656000.0", 282 | "market_cap_usd": "2408189244.0", 283 | "available_supply": "99589731.0", 284 | "total_supply": "99589731.0", 285 | "max_supply": null, 286 | "percent_change_1h": "2.89", 287 | "percent_change_24h": "12.79", 288 | "percent_change_7d": "-16.44", 289 | "last_updated": "1517666650" 290 | }, 291 | { 292 | "id": "tether", 293 | "name": "Tether", 294 | "symbol": "USDT", 295 | "rank": "18", 296 | "price_usd": "1.00685", 297 | "price_btc": "0.0001087", 298 | "24h_volume_usd": "3044830000.0", 299 | "market_cap_usd": "2232328228.0", 300 | "available_supply": "2217140814.0", 301 | "total_supply": "2280109970.0", 302 | "max_supply": null, 303 | "percent_change_1h": "0.79", 304 | "percent_change_24h": "2.43", 305 | "percent_change_7d": "0.81", 306 | "last_updated": "1517666648" 307 | }, 308 | { 309 | "id": "qtum", 310 | "name": "Qtum", 311 | "symbol": "QTUM", 312 | "rank": "19", 313 | "price_usd": "30.1659", 314 | "price_btc": "0.00325668", 315 | "24h_volume_usd": "399708000.0", 316 | "market_cap_usd": "2227895667.0", 317 | "available_supply": "73854772.0", 318 | "total_supply": "100354772.0", 319 | "max_supply": null, 320 | "percent_change_1h": "2.73", 321 | "percent_change_24h": "9.73", 322 | "percent_change_7d": "-23.19", 323 | "last_updated": "1517666655" 324 | }, 325 | { 326 | "id": "icon", 327 | "name": "ICON", 328 | "symbol": "ICX", 329 | "rank": "20", 330 | "price_usd": "5.82162", 331 | "price_btc": "0.0006285", 332 | "24h_volume_usd": "60682900.0", 333 | "market_cap_usd": "2219463540.0", 334 | "available_supply": "381245004.0", 335 | "total_supply": "400230000.0", 336 | "max_supply": null, 337 | "percent_change_1h": "4.57", 338 | "percent_change_24h": "17.43", 339 | "percent_change_7d": "-25.49", 340 | "last_updated": "1517666662" 341 | }, 342 | { 343 | "id": "populous", 344 | "name": "Populous", 345 | "symbol": "PPT", 346 | "rank": "21", 347 | "price_usd": "59.3221", 348 | "price_btc": "0.00640435", 349 | "24h_volume_usd": "7571510.0", 350 | "market_cap_usd": "2195156584.0", 351 | "available_supply": "37004027.0", 352 | "total_supply": "53252246.0", 353 | "max_supply": "53252246.0", 354 | "percent_change_1h": "-0.26", 355 | "percent_change_24h": "11.77", 356 | "percent_change_7d": "8.07", 357 | "last_updated": "1517666657" 358 | }, 359 | { 360 | "id": "raiblocks", 361 | "name": "Nano", 362 | "symbol": "XRB", 363 | "rank": "22", 364 | "price_usd": "16.2672", 365 | "price_btc": "0.00175619", 366 | "24h_volume_usd": "92882500.0", 367 | "market_cap_usd": "2167576570.0", 368 | "available_supply": "133248289.0", 369 | "total_supply": "133248289.0", 370 | "max_supply": "133248290.0", 371 | "percent_change_1h": "1.75", 372 | "percent_change_24h": "3.15", 373 | "percent_change_7d": "-11.46", 374 | "last_updated": "1517666653" 375 | }, 376 | { 377 | "id": "bitcoin-gold", 378 | "name": "Bitcoin Gold", 379 | "symbol": "BTG", 380 | "rank": "23", 381 | "price_usd": "111.157", 382 | "price_btc": "0.0120004", 383 | "24h_volume_usd": "50005900.0", 384 | "market_cap_usd": "1867670873.0", 385 | "available_supply": "16802099.0", 386 | "total_supply": "16902099.0", 387 | "max_supply": "21000000.0", 388 | "percent_change_1h": "2.16", 389 | "percent_change_24h": "8.88", 390 | "percent_change_7d": "-38.68", 391 | "last_updated": "1517666663" 392 | }, 393 | { 394 | "id": "omisego", 395 | "name": "OmiseGO", 396 | "symbol": "OMG", 397 | "rank": "24", 398 | "price_usd": "13.973", 399 | "price_btc": "0.00150851", 400 | "24h_volume_usd": "37635900.0", 401 | "market_cap_usd": "1425840576.0", 402 | "available_supply": "102042552.0", 403 | "total_supply": "140245398.0", 404 | "max_supply": null, 405 | "percent_change_1h": "1.57", 406 | "percent_change_24h": "15.23", 407 | "percent_change_7d": "-13.27", 408 | "last_updated": "1517666657" 409 | }, 410 | { 411 | "id": "zcash", 412 | "name": "Zcash", 413 | "symbol": "ZEC", 414 | "rank": "25", 415 | "price_usd": "391.051", 416 | "price_btc": "0.0422175", 417 | "24h_volume_usd": "64760200.0", 418 | "market_cap_usd": "1250715522.0", 419 | "available_supply": "3198344.0", 420 | "total_supply": "3198344.0", 421 | "max_supply": null, 422 | "percent_change_1h": "2.58", 423 | "percent_change_24h": "12.85", 424 | "percent_change_7d": "-13.89", 425 | "last_updated": "1517666651" 426 | }, 427 | { 428 | "id": "steem", 429 | "name": "Steem", 430 | "symbol": "STEEM", 431 | "rank": "26", 432 | "price_usd": "4.40124", 433 | "price_btc": "0.00047515", 434 | "24h_volume_usd": "97317300.0", 435 | "market_cap_usd": "1092783107.0", 436 | "available_supply": "248289824.0", 437 | "total_supply": "265263918.0", 438 | "max_supply": null, 439 | "percent_change_1h": "3.3", 440 | "percent_change_24h": "18.74", 441 | "percent_change_7d": "-26.87", 442 | "last_updated": "1517666649" 443 | }, 444 | { 445 | "id": "binance-coin", 446 | "name": "Binance Coin", 447 | "symbol": "BNB", 448 | "rank": "27", 449 | "price_usd": "10.1498", 450 | "price_btc": "0.00109576", 451 | "24h_volume_usd": "76417900.0", 452 | "market_cap_usd": "1004972297.0", 453 | "available_supply": "99014000.0", 454 | "total_supply": "197192382.0", 455 | "max_supply": null, 456 | "percent_change_1h": "2.68", 457 | "percent_change_24h": "18.13", 458 | "percent_change_7d": "-23.08", 459 | "last_updated": "1517666657" 460 | }, 461 | { 462 | "id": "stratis", 463 | "name": "Stratis", 464 | "symbol": "STRAT", 465 | "rank": "28", 466 | "price_usd": "9.81214", 467 | "price_btc": "0.00105931", 468 | "24h_volume_usd": "15618900.0", 469 | "market_cap_usd": "968714307.0", 470 | "available_supply": "98726099.0", 471 | "total_supply": "98726099.0", 472 | "max_supply": null, 473 | "percent_change_1h": "2.76", 474 | "percent_change_24h": "15.19", 475 | "percent_change_7d": "-33.4", 476 | "last_updated": "1517666650" 477 | }, 478 | { 479 | "id": "siacoin", 480 | "name": "Siacoin", 481 | "symbol": "SC", 482 | "rank": "29", 483 | "price_usd": "0.0297033", 484 | "price_btc": "0.00000321", 485 | "24h_volume_usd": "29785200.0", 486 | "market_cap_usd": "955915868.0", 487 | "available_supply": "32182143672.0", 488 | "total_supply": "32182143672.0", 489 | "max_supply": null, 490 | "percent_change_1h": "3.72", 491 | "percent_change_24h": "25.61", 492 | "percent_change_7d": "-25.03", 493 | "last_updated": "1517666648" 494 | }, 495 | { 496 | "id": "verge", 497 | "name": "Verge", 498 | "symbol": "XVG", 499 | "rank": "30", 500 | "price_usd": "0.064171", 501 | "price_btc": "0.00000693", 502 | "24h_volume_usd": "42747100.0", 503 | "market_cap_usd": "933690991.0", 504 | "available_supply": "14550045837.0", 505 | "total_supply": "14550045837.0", 506 | "max_supply": "16555000000.0", 507 | "percent_change_1h": "3.8", 508 | "percent_change_24h": "30.52", 509 | "percent_change_7d": "-28.13", 510 | "last_updated": "1517666644" 511 | }, 512 | { 513 | "id": "bytecoin-bcn", 514 | "name": "Bytecoin", 515 | "symbol": "BCN", 516 | "rank": "31", 517 | "price_usd": "0.00497731", 518 | "price_btc": "0.00000054", 519 | "24h_volume_usd": "3677830.0", 520 | "market_cap_usd": "914353678.0", 521 | "available_supply": "183704386026", 522 | "total_supply": "183704386026", 523 | "max_supply": "184470000000", 524 | "percent_change_1h": "2.5", 525 | "percent_change_24h": "16.86", 526 | "percent_change_7d": "-31.49", 527 | "last_updated": "1517666644" 528 | }, 529 | { 530 | "id": "bitshares", 531 | "name": "BitShares", 532 | "symbol": "BTS", 533 | "rank": "32", 534 | "price_usd": "0.349456", 535 | "price_btc": "0.00003773", 536 | "24h_volume_usd": "29691100.0", 537 | "market_cap_usd": "911318346.0", 538 | "available_supply": "2607820000.0", 539 | "total_supply": "2607820000.0", 540 | "max_supply": "3600570502.0", 541 | "percent_change_1h": "2.91", 542 | "percent_change_24h": "18.02", 543 | "percent_change_7d": "-29.41", 544 | "last_updated": "1517666643" 545 | }, 546 | { 547 | "id": "maker", 548 | "name": "Maker", 549 | "symbol": "MKR", 550 | "rank": "33", 551 | "price_usd": "1210.12", 552 | "price_btc": "0.130644", 553 | "24h_volume_usd": "536737.0", 554 | "market_cap_usd": "748129789.0", 555 | "available_supply": "618228.0", 556 | "total_supply": "1000000.0", 557 | "max_supply": null, 558 | "percent_change_1h": "2.55", 559 | "percent_change_24h": "7.81", 560 | "percent_change_7d": "-12.8", 561 | "last_updated": "1517666653" 562 | }, 563 | { 564 | "id": "walton", 565 | "name": "Walton", 566 | "symbol": "WTC", 567 | "rank": "34", 568 | "price_usd": "29.9257", 569 | "price_btc": "0.00323075", 570 | "24h_volume_usd": "24701100.0", 571 | "market_cap_usd": "745095405.0", 572 | "available_supply": "24898178.0", 573 | "total_supply": "70000000.0", 574 | "max_supply": "100000000.0", 575 | "percent_change_1h": "3.34", 576 | "percent_change_24h": "32.43", 577 | "percent_change_7d": "-23.74", 578 | "last_updated": "1517666659" 579 | }, 580 | { 581 | "id": "digixdao", 582 | "name": "DigixDAO", 583 | "symbol": "DGD", 584 | "rank": "35", 585 | "price_usd": "363.774", 586 | "price_btc": "0.0392726", 587 | "24h_volume_usd": "194210000.0", 588 | "market_cap_usd": "727548000.0", 589 | "available_supply": "2000000.0", 590 | "total_supply": "2000000.0", 591 | "max_supply": null, 592 | "percent_change_1h": "6.69", 593 | "percent_change_24h": "12.49", 594 | "percent_change_7d": "52.95", 595 | "last_updated": "1517666648" 596 | }, 597 | { 598 | "id": "veritaseum", 599 | "name": "Veritaseum", 600 | "symbol": "VERI", 601 | "rank": "36", 602 | "price_usd": "356.908", 603 | "price_btc": "0.0385314", 604 | "24h_volume_usd": "717065.0", 605 | "market_cap_usd": "726895051.0", 606 | "available_supply": "2036645.0", 607 | "total_supply": "100000000.0", 608 | "max_supply": null, 609 | "percent_change_1h": "2.31", 610 | "percent_change_24h": "17.3", 611 | "percent_change_7d": "-5.73", 612 | "last_updated": "1517666655" 613 | }, 614 | { 615 | "id": "kucoin-shares", 616 | "name": "KuCoin Shares", 617 | "symbol": "KCS", 618 | "rank": "37", 619 | "price_usd": "7.87193", 620 | "price_btc": "0.00084985", 621 | "24h_volume_usd": "3160790.0", 622 | "market_cap_usd": "716684721.0", 623 | "available_supply": "91043076.0", 624 | "total_supply": "181043076.0", 625 | "max_supply": null, 626 | "percent_change_1h": "6.6", 627 | "percent_change_24h": "29.98", 628 | "percent_change_7d": "-13.79", 629 | "last_updated": "1517666662" 630 | }, 631 | { 632 | "id": "0x", 633 | "name": "0x", 634 | "symbol": "ZRX", 635 | "rank": "38", 636 | "price_usd": "1.41408", 637 | "price_btc": "0.00015266", 638 | "24h_volume_usd": "19353500.0", 639 | "market_cap_usd": "713807815.0", 640 | "available_supply": "504786020.0", 641 | "total_supply": "1000000000.0", 642 | "max_supply": null, 643 | "percent_change_1h": "3.84", 644 | "percent_change_24h": "10.35", 645 | "percent_change_7d": "-31.13", 646 | "last_updated": "1517666658" 647 | }, 648 | { 649 | "id": "aeternity", 650 | "name": "Aeternity", 651 | "symbol": "AE", 652 | "rank": "39", 653 | "price_usd": "2.93705", 654 | "price_btc": "0.00031708", 655 | "24h_volume_usd": "6438770.0", 656 | "market_cap_usd": "684392778.0", 657 | "available_supply": "233020472.0", 658 | "total_supply": "273685830.0", 659 | "max_supply": null, 660 | "percent_change_1h": "2.38", 661 | "percent_change_24h": "17.74", 662 | "percent_change_7d": "8.79", 663 | "last_updated": "1517666655" 664 | }, 665 | { 666 | "id": "augur", 667 | "name": "Augur", 668 | "symbol": "REP", 669 | "rank": "40", 670 | "price_usd": "59.7934", 671 | "price_btc": "0.00645523", 672 | "24h_volume_usd": "9184030.0", 673 | "market_cap_usd": "657727400.0", 674 | "available_supply": "11000000.0", 675 | "total_supply": "11000000.0", 676 | "max_supply": null, 677 | "percent_change_1h": "2.68", 678 | "percent_change_24h": "12.02", 679 | "percent_change_7d": "-28.28", 680 | "last_updated": "1517666647" 681 | }, 682 | { 683 | "id": "waves", 684 | "name": "Waves", 685 | "symbol": "WAVES", 686 | "rank": "41", 687 | "price_usd": "6.55205", 688 | "price_btc": "0.00070735", 689 | "24h_volume_usd": "23482500.0", 690 | "market_cap_usd": "655205000.0", 691 | "available_supply": "100000000.0", 692 | "total_supply": "100000000.0", 693 | "max_supply": null, 694 | "percent_change_1h": "2.89", 695 | "percent_change_24h": "10.89", 696 | "percent_change_7d": "-28.66", 697 | "last_updated": "1517666650" 698 | }, 699 | { 700 | "id": "rchain", 701 | "name": "RChain", 702 | "symbol": "RHOC", 703 | "rank": "42", 704 | "price_usd": "1.8795", 705 | "price_btc": "0.00020291", 706 | "24h_volume_usd": "598687.0", 707 | "market_cap_usd": "646860540.0", 708 | "available_supply": "344166289.0", 709 | "total_supply": "870663574.0", 710 | "max_supply": "1000000000.0", 711 | "percent_change_1h": "5.25", 712 | "percent_change_24h": "20.93", 713 | "percent_change_7d": "-0.21", 714 | "last_updated": "1517666661" 715 | }, 716 | { 717 | "id": "status", 718 | "name": "Status", 719 | "symbol": "SNT", 720 | "rank": "43", 721 | "price_usd": "0.180448", 722 | "price_btc": "0.00001948", 723 | "24h_volume_usd": "434863000.0", 724 | "market_cap_usd": "626241859.0", 725 | "available_supply": "3470483788.0", 726 | "total_supply": "6804870174.0", 727 | "max_supply": null, 728 | "percent_change_1h": "3.66", 729 | "percent_change_24h": "14.09", 730 | "percent_change_7d": "-37.07", 731 | "last_updated": "1517666656" 732 | }, 733 | { 734 | "id": "dogecoin", 735 | "name": "Dogecoin", 736 | "symbol": "DOGE", 737 | "rank": "44", 738 | "price_usd": "0.00523349", 739 | "price_btc": "0.00000057", 740 | "24h_volume_usd": "20082800.0", 741 | "market_cap_usd": "591642258.0", 742 | "available_supply": "113049276509", 743 | "total_supply": "113049276509", 744 | "max_supply": null, 745 | "percent_change_1h": "3.65", 746 | "percent_change_24h": "26.85", 747 | "percent_change_7d": "-28.77", 748 | "last_updated": "1517666642" 749 | }, 750 | { 751 | "id": "decred", 752 | "name": "Decred", 753 | "symbol": "DCR", 754 | "rank": "45", 755 | "price_usd": "85.2769", 756 | "price_btc": "0.00920641", 757 | "24h_volume_usd": "1433190.0", 758 | "market_cap_usd": "570043581.0", 759 | "available_supply": "6684619.0", 760 | "total_supply": "7104619.0", 761 | "max_supply": "21000000.0", 762 | "percent_change_1h": "2.02", 763 | "percent_change_24h": "14.53", 764 | "percent_change_7d": "-5.91", 765 | "last_updated": "1517666648" 766 | }, 767 | { 768 | "id": "ardor", 769 | "name": "Ardor", 770 | "symbol": "ARDR", 771 | "rank": "46", 772 | "price_usd": "0.531", 773 | "price_btc": "0.00005733", 774 | "24h_volume_usd": "20947700.0", 775 | "market_cap_usd": "530468732.0", 776 | "available_supply": "998999495.0", 777 | "total_supply": "998999495.0", 778 | "max_supply": "998999495.0", 779 | "percent_change_1h": "3.87", 780 | "percent_change_24h": "18.58", 781 | "percent_change_7d": "-44.8", 782 | "last_updated": "1517666650" 783 | }, 784 | { 785 | "id": "komodo", 786 | "name": "Komodo", 787 | "symbol": "KMD", 788 | "rank": "47", 789 | "price_usd": "5.04935", 790 | "price_btc": "0.00054512", 791 | "24h_volume_usd": "6844890.0", 792 | "market_cap_usd": "517680316.0", 793 | "available_supply": "102524150.0", 794 | "total_supply": "102524150.0", 795 | "max_supply": null, 796 | "percent_change_1h": "6.25", 797 | "percent_change_24h": "22.65", 798 | "percent_change_7d": "-22.23", 799 | "last_updated": "1517666653" 800 | }, 801 | { 802 | "id": "hshare", 803 | "name": "Hshare", 804 | "symbol": "HSR", 805 | "rank": "48", 806 | "price_usd": "12.1189", 807 | "price_btc": "0.00130834", 808 | "24h_volume_usd": "81725800.0", 809 | "market_cap_usd": "515997884.0", 810 | "available_supply": "42577947.0", 811 | "total_supply": "42577947.0", 812 | "max_supply": "84000000.0", 813 | "percent_change_1h": "1.62", 814 | "percent_change_24h": "10.15", 815 | "percent_change_7d": "-31.16", 816 | "last_updated": "1517666660" 817 | }, 818 | { 819 | "id": "zilliqa", 820 | "name": "Zilliqa", 821 | "symbol": "ZIL", 822 | "rank": "49", 823 | "price_usd": "0.0780808", 824 | "price_btc": "0.00000843", 825 | "24h_volume_usd": "11511400.0", 826 | "market_cap_usd": "508227007.0", 827 | "available_supply": "6508988220.0", 828 | "total_supply": "12600000000.0", 829 | "max_supply": null, 830 | "percent_change_1h": "3.55", 831 | "percent_change_24h": "20.57", 832 | "percent_change_7d": "-22.98", 833 | "last_updated": "1517666669" 834 | }, 835 | { 836 | "id": "kyber-network", 837 | "name": "Kyber Network", 838 | "symbol": "KNC", 839 | "rank": "50", 840 | "price_usd": "3.67237", 841 | "price_btc": "0.00039646", 842 | "24h_volume_usd": "6690820.0", 843 | "market_cap_usd": "492584892.0", 844 | "available_supply": "134132697.0", 845 | "total_supply": "215625349.0", 846 | "max_supply": null, 847 | "percent_change_1h": "3.17", 848 | "percent_change_24h": "16.7", 849 | "percent_change_7d": "-4.62", 850 | "last_updated": "1517666661" 851 | }, 852 | { 853 | "id": "dragonchain", 854 | "name": "Dragonchain", 855 | "symbol": "DRGN", 856 | "rank": "51", 857 | "price_usd": "2.04359", 858 | "price_btc": "0.00022062", 859 | "24h_volume_usd": "4021540.0", 860 | "market_cap_usd": "487236692.0", 861 | "available_supply": "238421940.0", 862 | "total_supply": "433494437.0", 863 | "max_supply": null, 864 | "percent_change_1h": "4.04", 865 | "percent_change_24h": "28.76", 866 | "percent_change_7d": "-26.07", 867 | "last_updated": "1517666665" 868 | }, 869 | { 870 | "id": "gas", 871 | "name": "Gas", 872 | "symbol": "GAS", 873 | "rank": "52", 874 | "price_usd": "50.4474", 875 | "price_btc": "0.00544625", 876 | "24h_volume_usd": "12083300.0", 877 | "market_cap_usd": "486143007.0", 878 | "available_supply": "9636632.0", 879 | "total_supply": "15085488.0", 880 | "max_supply": "100000000.0", 881 | "percent_change_1h": "3.84", 882 | "percent_change_24h": "13.42", 883 | "percent_change_7d": "2.23", 884 | "last_updated": "1517666656" 885 | }, 886 | { 887 | "id": "ark", 888 | "name": "Ark", 889 | "symbol": "ARK", 890 | "rank": "53", 891 | "price_usd": "4.84655", 892 | "price_btc": "0.00052323", 893 | "24h_volume_usd": "4973740.0", 894 | "market_cap_usd": "474871192.0", 895 | "available_supply": "97981284.0", 896 | "total_supply": "131264724.0", 897 | "max_supply": null, 898 | "percent_change_1h": "1.91", 899 | "percent_change_24h": "15.07", 900 | "percent_change_7d": "-26.57", 901 | "last_updated": "1517666653" 902 | }, 903 | { 904 | "id": "loopring", 905 | "name": "Loopring", 906 | "symbol": "LRC", 907 | "rank": "54", 908 | "price_usd": "0.835155", 909 | "price_btc": "0.00009016", 910 | "24h_volume_usd": "3505670.0", 911 | "market_cap_usd": "468690866.0", 912 | "available_supply": "561202251.0", 913 | "total_supply": "1374956357.0", 914 | "max_supply": null, 915 | "percent_change_1h": "1.51", 916 | "percent_change_24h": "13.48", 917 | "percent_change_7d": "-26.33", 918 | "last_updated": "1517666659" 919 | }, 920 | { 921 | "id": "dentacoin", 922 | "name": "Dentacoin", 923 | "symbol": "DCN", 924 | "rank": "55", 925 | "price_usd": "0.0014299", 926 | "price_btc": "0.00000015", 927 | "24h_volume_usd": "2599010.0", 928 | "market_cap_usd": "465041534.0", 929 | "available_supply": "325226613094", 930 | "total_supply": "1963173416169", 931 | "max_supply": "8000000000000", 932 | "percent_change_1h": "8.06", 933 | "percent_change_24h": "54.5", 934 | "percent_change_7d": "-16.99", 935 | "last_updated": "1517666659" 936 | }, 937 | { 938 | "id": "electroneum", 939 | "name": "Electroneum", 940 | "symbol": "ETN", 941 | "rank": "56", 942 | "price_usd": "0.0764391", 943 | "price_btc": "0.00000825", 944 | "24h_volume_usd": "5792080.0", 945 | "market_cap_usd": "461226714.0", 946 | "available_supply": "6033910841.0", 947 | "total_supply": "6033910841.0", 948 | "max_supply": "21000000000.0", 949 | "percent_change_1h": "4.28", 950 | "percent_change_24h": "31.52", 951 | "percent_change_7d": "-30.31", 952 | "last_updated": "1517666663" 953 | }, 954 | { 955 | "id": "basic-attention-token", 956 | "name": "Basic Attention Token", 957 | "symbol": "BAT", 958 | "rank": "57", 959 | "price_usd": "0.451702", 960 | "price_btc": "0.00004877", 961 | "24h_volume_usd": "6853990.0", 962 | "market_cap_usd": "451702000.0", 963 | "available_supply": "1000000000.0", 964 | "total_supply": "1500000000.0", 965 | "max_supply": null, 966 | "percent_change_1h": "0.97", 967 | "percent_change_24h": "17.68", 968 | "percent_change_7d": "-24.82", 969 | "last_updated": "1517666655" 970 | }, 971 | { 972 | "id": "digibyte", 973 | "name": "DigiByte", 974 | "symbol": "DGB", 975 | "rank": "58", 976 | "price_usd": "0.0450487", 977 | "price_btc": "0.00000488", 978 | "24h_volume_usd": "5936290.0", 979 | "market_cap_usd": "441012365.0", 980 | "available_supply": "9789680166.0", 981 | "total_supply": "9789680166.0", 982 | "max_supply": "21000000000.0", 983 | "percent_change_1h": "3.2", 984 | "percent_change_24h": "16.86", 985 | "percent_change_7d": "-19.29", 986 | "last_updated": "1517666941" 987 | }, 988 | { 989 | "id": "aelf", 990 | "name": "aelf", 991 | "symbol": "ELF", 992 | "rank": "59", 993 | "price_usd": "1.67665", 994 | "price_btc": "0.00018101", 995 | "24h_volume_usd": "76097800.0", 996 | "market_cap_usd": "419162500.0", 997 | "available_supply": "250000000.0", 998 | "total_supply": "260000000.0", 999 | "max_supply": null, 1000 | "percent_change_1h": "1.45", 1001 | "percent_change_24h": "11.87", 1002 | "percent_change_7d": "-13.41", 1003 | "last_updated": "1517666665" 1004 | }, 1005 | { 1006 | "id": "byteball", 1007 | "name": "Byteball Bytes", 1008 | "symbol": "GBYTE", 1009 | "rank": "60", 1010 | "price_usd": "621.68", 1011 | "price_btc": "0.0671159", 1012 | "24h_volume_usd": "1275060.0", 1013 | "market_cap_usd": "401121646.0", 1014 | "available_supply": "645222.0", 1015 | "total_supply": "1000000.0", 1016 | "max_supply": null, 1017 | "percent_change_1h": "2.47", 1018 | "percent_change_24h": "20.01", 1019 | "percent_change_7d": "-14.92", 1020 | "last_updated": "1517666652" 1021 | }, 1022 | { 1023 | "id": "pivx", 1024 | "name": "PIVX", 1025 | "symbol": "PIVX", 1026 | "rank": "61", 1027 | "price_usd": "6.89377", 1028 | "price_btc": "0.00074424", 1029 | "24h_volume_usd": "22380100.0", 1030 | "market_cap_usd": "382513536.0", 1031 | "available_supply": "55486843.0", 1032 | "total_supply": "55486843.0", 1033 | "max_supply": null, 1034 | "percent_change_1h": "-1.38", 1035 | "percent_change_24h": "27.69", 1036 | "percent_change_7d": "-28.96", 1037 | "last_updated": "1517666648" 1038 | }, 1039 | { 1040 | "id": "zclassic", 1041 | "name": "ZClassic", 1042 | "symbol": "ZCL", 1043 | "rank": "62", 1044 | "price_usd": "112.088", 1045 | "price_btc": "0.0121009", 1046 | "24h_volume_usd": "5888760.0", 1047 | "market_cap_usd": "362428141.0", 1048 | "available_supply": "3233425.0", 1049 | "total_supply": "3233425.0", 1050 | "max_supply": "21000000.0", 1051 | "percent_change_1h": "4.44", 1052 | "percent_change_24h": "21.96", 1053 | "percent_change_7d": "-25.85", 1054 | "last_updated": "1517666651" 1055 | }, 1056 | { 1057 | "id": "bytom", 1058 | "name": "Bytom", 1059 | "symbol": "BTM", 1060 | "rank": "63", 1061 | "price_usd": "0.361809", 1062 | "price_btc": "0.00003906", 1063 | "24h_volume_usd": "12410300.0", 1064 | "market_cap_usd": "357105483.0", 1065 | "available_supply": "987000000.0", 1066 | "total_supply": "1407000000.0", 1067 | "max_supply": null, 1068 | "percent_change_1h": "2.12", 1069 | "percent_change_24h": "11.92", 1070 | "percent_change_7d": "-16.65", 1071 | "last_updated": "1517666659" 1072 | }, 1073 | { 1074 | "id": "qash", 1075 | "name": "QASH", 1076 | "symbol": "QASH", 1077 | "rank": "64", 1078 | "price_usd": "1.00304", 1079 | "price_btc": "0.00010829", 1080 | "24h_volume_usd": "9143360.0", 1081 | "market_cap_usd": "351064000.0", 1082 | "available_supply": "350000000.0", 1083 | "total_supply": "1000000000.0", 1084 | "max_supply": null, 1085 | "percent_change_1h": "2.89", 1086 | "percent_change_24h": "13.85", 1087 | "percent_change_7d": "-29.54", 1088 | "last_updated": "1517666664" 1089 | }, 1090 | { 1091 | "id": "nebulas-token", 1092 | "name": "Nebulas", 1093 | "symbol": "NAS", 1094 | "rank": "65", 1095 | "price_usd": "9.85713", 1096 | "price_btc": "0.00106416", 1097 | "24h_volume_usd": "13365200.0", 1098 | "market_cap_usd": "349928115.0", 1099 | "available_supply": "35500000.0", 1100 | "total_supply": "100000000.0", 1101 | "max_supply": "100000000.0", 1102 | "percent_change_1h": "3.27", 1103 | "percent_change_24h": "15.04", 1104 | "percent_change_7d": "-12.55", 1105 | "last_updated": "1517666659" 1106 | }, 1107 | { 1108 | "id": "pillar", 1109 | "name": "Pillar", 1110 | "symbol": "PLR", 1111 | "rank": "66", 1112 | "price_usd": "1.47136", 1113 | "price_btc": "0.00015885", 1114 | "24h_volume_usd": "1359680.0", 1115 | "market_cap_usd": "334564899.0", 1116 | "available_supply": "227384800.0", 1117 | "total_supply": "800000000.0", 1118 | "max_supply": null, 1119 | "percent_change_1h": "2.75", 1120 | "percent_change_24h": "19.04", 1121 | "percent_change_7d": "35.59", 1122 | "last_updated": "1517666657" 1123 | }, 1124 | { 1125 | "id": "iostoken", 1126 | "name": "IOStoken", 1127 | "symbol": "IOST", 1128 | "rank": "67", 1129 | "price_usd": "0.0490289", 1130 | "price_btc": "0.00000529", 1131 | "24h_volume_usd": "61326500.0", 1132 | "market_cap_usd": "333107736.0", 1133 | "available_supply": "6794109922.0", 1134 | "total_supply": "21000000000.0", 1135 | "max_supply": null, 1136 | "percent_change_1h": "2.57", 1137 | "percent_change_24h": "11.39", 1138 | "percent_change_7d": "-45.96", 1139 | "last_updated": "1517666668" 1140 | }, 1141 | { 1142 | "id": "golem-network-tokens", 1143 | "name": "Golem", 1144 | "symbol": "GNT", 1145 | "rank": "68", 1146 | "price_usd": "0.396892", 1147 | "price_btc": "0.00004285", 1148 | "24h_volume_usd": "3568850.0", 1149 | "market_cap_usd": "331111914.0", 1150 | "available_supply": "834262000.0", 1151 | "total_supply": "1000000000.0", 1152 | "max_supply": null, 1153 | "percent_change_1h": "2.71", 1154 | "percent_change_24h": "16.17", 1155 | "percent_change_7d": "-29.66", 1156 | "last_updated": "1517666652" 1157 | }, 1158 | { 1159 | "id": "ethos", 1160 | "name": "Ethos", 1161 | "symbol": "ETHOS", 1162 | "rank": "69", 1163 | "price_usd": "4.22276", 1164 | "price_btc": "0.00045589", 1165 | "24h_volume_usd": "3343090.0", 1166 | "market_cap_usd": "318438773.0", 1167 | "available_supply": "75410105.0", 1168 | "total_supply": "222295208.0", 1169 | "max_supply": null, 1170 | "percent_change_1h": "3.38", 1171 | "percent_change_24h": "21.59", 1172 | "percent_change_7d": "-22.85", 1173 | "last_updated": "1517666657" 1174 | }, 1175 | { 1176 | "id": "cindicator", 1177 | "name": "Cindicator", 1178 | "symbol": "CND", 1179 | "rank": "70", 1180 | "price_usd": "0.21498", 1181 | "price_btc": "0.00002321", 1182 | "24h_volume_usd": "12697000.0", 1183 | "market_cap_usd": "310856047.0", 1184 | "available_supply": "1445976590.0", 1185 | "total_supply": "2000000005.0", 1186 | "max_supply": null, 1187 | "percent_change_1h": "2.12", 1188 | "percent_change_24h": "20.54", 1189 | "percent_change_7d": "-24.49", 1190 | "last_updated": "1517666662" 1191 | }, 1192 | { 1193 | "id": "cryptonex", 1194 | "name": "Cryptonex", 1195 | "symbol": "CNX", 1196 | "rank": "71", 1197 | "price_usd": "6.83693", 1198 | "price_btc": "0.00073811", 1199 | "24h_volume_usd": "261962.0", 1200 | "market_cap_usd": "308320864.0", 1201 | "available_supply": "45096390.0", 1202 | "total_supply": "106534016.0", 1203 | "max_supply": "210000000.0", 1204 | "percent_change_1h": "6.58", 1205 | "percent_change_24h": "12.19", 1206 | "percent_change_7d": "-21.31", 1207 | "last_updated": "1517666660" 1208 | }, 1209 | { 1210 | "id": "dent", 1211 | "name": "Dent", 1212 | "symbol": "DENT", 1213 | "rank": "72", 1214 | "price_usd": "0.0290226", 1215 | "price_btc": "0.00000313", 1216 | "24h_volume_usd": "11829400.0", 1217 | "market_cap_usd": "308067961.0", 1218 | "available_supply": "10614760961.0", 1219 | "total_supply": "100000000000", 1220 | "max_supply": null, 1221 | "percent_change_1h": "11.42", 1222 | "percent_change_24h": "46.52", 1223 | "percent_change_7d": "-13.66", 1224 | "last_updated": "1517666658" 1225 | }, 1226 | { 1227 | "id": "gxshares", 1228 | "name": "GXShares", 1229 | "symbol": "GXS", 1230 | "rank": "73", 1231 | "price_usd": "5.01552", 1232 | "price_btc": "0.00054147", 1233 | "24h_volume_usd": "13786800.0", 1234 | "market_cap_usd": "300931200.0", 1235 | "available_supply": "60000000.0", 1236 | "total_supply": "100000000.0", 1237 | "max_supply": "100000000.0", 1238 | "percent_change_1h": "3.44", 1239 | "percent_change_24h": "18.74", 1240 | "percent_change_7d": "-6.66", 1241 | "last_updated": "1517666656" 1242 | }, 1243 | { 1244 | "id": "aion", 1245 | "name": "Aion", 1246 | "symbol": "AION", 1247 | "rank": "74", 1248 | "price_usd": "3.77985", 1249 | "price_btc": "0.00040807", 1250 | "24h_volume_usd": "3496380.0", 1251 | "market_cap_usd": "299612588.0", 1252 | "available_supply": "79265735.0", 1253 | "total_supply": "465934587.0", 1254 | "max_supply": null, 1255 | "percent_change_1h": "4.51", 1256 | "percent_change_24h": "20.9", 1257 | "percent_change_7d": "-20.6", 1258 | "last_updated": "1517666662" 1259 | }, 1260 | { 1261 | "id": "bitcore", 1262 | "name": "Bitcore", 1263 | "symbol": "BTX", 1264 | "rank": "75", 1265 | "price_usd": "26.7589", 1266 | "price_btc": "0.00288886", 1267 | "24h_volume_usd": "2325490.0", 1268 | "market_cap_usd": "295559830.0", 1269 | "available_supply": "11045291.0", 1270 | "total_supply": "16784113.0", 1271 | "max_supply": "21000000.0", 1272 | "percent_change_1h": "0.43", 1273 | "percent_change_24h": "24.45", 1274 | "percent_change_7d": "4.96", 1275 | "last_updated": "1517666655" 1276 | }, 1277 | { 1278 | "id": "salt", 1279 | "name": "SALT", 1280 | "symbol": "SALT", 1281 | "rank": "76", 1282 | "price_usd": "5.22288", 1283 | "price_btc": "0.00056386", 1284 | "24h_volume_usd": "6101090.0", 1285 | "market_cap_usd": "281972310.0", 1286 | "available_supply": "53987897.0", 1287 | "total_supply": "120000000.0", 1288 | "max_supply": null, 1289 | "percent_change_1h": "4.16", 1290 | "percent_change_24h": "21.74", 1291 | "percent_change_7d": "-33.93", 1292 | "last_updated": "1517666659" 1293 | }, 1294 | { 1295 | "id": "syscoin", 1296 | "name": "Syscoin", 1297 | "symbol": "SYS", 1298 | "rank": "77", 1299 | "price_usd": "0.530297", 1300 | "price_btc": "0.00005725", 1301 | "24h_volume_usd": "2717840.0", 1302 | "market_cap_usd": "281426067.0", 1303 | "available_supply": "530695189.0", 1304 | "total_supply": "530695189.0", 1305 | "max_supply": "888000000.0", 1306 | "percent_change_1h": "2.96", 1307 | "percent_change_24h": "17.54", 1308 | "percent_change_7d": "-18.25", 1309 | "last_updated": "1517666645" 1310 | }, 1311 | { 1312 | "id": "factom", 1313 | "name": "Factom", 1314 | "symbol": "FCT", 1315 | "rank": "78", 1316 | "price_usd": "31.402", 1317 | "price_btc": "0.00339013", 1318 | "24h_volume_usd": "7324650.0", 1319 | "market_cap_usd": "274613693.0", 1320 | "available_supply": "8745102.0", 1321 | "total_supply": "8745102.0", 1322 | "max_supply": null, 1323 | "percent_change_1h": "3.06", 1324 | "percent_change_24h": "20.49", 1325 | "percent_change_7d": "-30.26", 1326 | "last_updated": "1517666647" 1327 | }, 1328 | { 1329 | "id": "revain", 1330 | "name": "Revain", 1331 | "symbol": "R", 1332 | "rank": "79", 1333 | "price_usd": "1.48311", 1334 | "price_btc": "0.00016012", 1335 | "24h_volume_usd": "4439550.0", 1336 | "market_cap_usd": "273559640.0", 1337 | "available_supply": "184450000.0", 1338 | "total_supply": "484450000.0", 1339 | "max_supply": "484450000.0", 1340 | "percent_change_1h": "-1.62", 1341 | "percent_change_24h": "5.57", 1342 | "percent_change_7d": "116.12", 1343 | "last_updated": "1517666663" 1344 | }, 1345 | { 1346 | "id": "power-ledger", 1347 | "name": "Power Ledger", 1348 | "symbol": "POWR", 1349 | "rank": "80", 1350 | "price_usd": "0.747105", 1351 | "price_btc": "0.00008066", 1352 | "24h_volume_usd": "15873800.0", 1353 | "market_cap_usd": "271804804.0", 1354 | "available_supply": "363810715.0", 1355 | "total_supply": "1000000000.0", 1356 | "max_supply": null, 1357 | "percent_change_1h": "2.43", 1358 | "percent_change_24h": "20.38", 1359 | "percent_change_7d": "-25.4", 1360 | "last_updated": "1517666662" 1361 | }, 1362 | { 1363 | "id": "funfair", 1364 | "name": "FunFair", 1365 | "symbol": "FUN", 1366 | "rank": "81", 1367 | "price_usd": "0.0613375", 1368 | "price_btc": "0.00000662", 1369 | "24h_volume_usd": "18863900.0", 1370 | "market_cap_usd": "271055662.0", 1371 | "available_supply": "4419085589.0", 1372 | "total_supply": "10999873621.0", 1373 | "max_supply": null, 1374 | "percent_change_1h": "4.3", 1375 | "percent_change_24h": "5.69", 1376 | "percent_change_7d": "-40.11", 1377 | "last_updated": "1517666656" 1378 | }, 1379 | { 1380 | "id": "monacoin", 1381 | "name": "MonaCoin", 1382 | "symbol": "MONA", 1383 | "rank": "82", 1384 | "price_usd": "4.58168", 1385 | "price_btc": "0.00049463", 1386 | "24h_volume_usd": "9379060.0", 1387 | "market_cap_usd": "261923305.0", 1388 | "available_supply": "57167525.0", 1389 | "total_supply": "57167525.0", 1390 | "max_supply": null, 1391 | "percent_change_1h": "2.42", 1392 | "percent_change_24h": "34.72", 1393 | "percent_change_7d": "-21.53", 1394 | "last_updated": "1517666642" 1395 | }, 1396 | { 1397 | "id": "singularitynet", 1398 | "name": "SingularityNET", 1399 | "symbol": "AGI", 1400 | "rank": "83", 1401 | "price_usd": "0.579399", 1402 | "price_btc": "0.00006255", 1403 | "24h_volume_usd": "1768100.0", 1404 | "market_cap_usd": "257213492.0", 1405 | "available_supply": "443931542.0", 1406 | "total_supply": "1000000000.0", 1407 | "max_supply": null, 1408 | "percent_change_1h": "4.67", 1409 | "percent_change_24h": "15.33", 1410 | "percent_change_7d": "-35.69", 1411 | "last_updated": "1517666668" 1412 | }, 1413 | { 1414 | "id": "smartcash", 1415 | "name": "SmartCash", 1416 | "symbol": "SMART", 1417 | "rank": "84", 1418 | "price_usd": "0.369317", 1419 | "price_btc": "0.00003987", 1420 | "24h_volume_usd": "651734.0", 1421 | "market_cap_usd": "252392480.0", 1422 | "available_supply": "683403362.0", 1423 | "total_supply": "1284447642.0", 1424 | "max_supply": "5000000000.0", 1425 | "percent_change_1h": "3.92", 1426 | "percent_change_24h": "6.56", 1427 | "percent_change_7d": "-38.65", 1428 | "last_updated": "1517666657" 1429 | }, 1430 | { 1431 | "id": "zcoin", 1432 | "name": "ZCoin", 1433 | "symbol": "XZC", 1434 | "rank": "85", 1435 | "price_usd": "61.1652", 1436 | "price_btc": "0.00660333", 1437 | "24h_volume_usd": "6410820.0", 1438 | "market_cap_usd": "246142856.0", 1439 | "available_supply": "4024230.0", 1440 | "total_supply": "4024230.0", 1441 | "max_supply": null, 1442 | "percent_change_1h": "3.12", 1443 | "percent_change_24h": "22.65", 1444 | "percent_change_7d": "-17.72", 1445 | "last_updated": "1517666651" 1446 | }, 1447 | { 1448 | "id": "kin", 1449 | "name": "Kin", 1450 | "symbol": "KIN", 1451 | "rank": "86", 1452 | "price_usd": "0.00031927", 1453 | "price_btc": "0.00000003", 1454 | "24h_volume_usd": "611462.0", 1455 | "market_cap_usd": "241399268.0", 1456 | "available_supply": "756097560976", 1457 | "total_supply": "10000000000000", 1458 | "max_supply": null, 1459 | "percent_change_1h": "-5.45", 1460 | "percent_change_24h": "18.6", 1461 | "percent_change_7d": "-12.47", 1462 | "last_updated": "1517666660" 1463 | }, 1464 | { 1465 | "id": "enigma-project", 1466 | "name": "Enigma", 1467 | "symbol": "ENG", 1468 | "rank": "87", 1469 | "price_usd": "3.18627", 1470 | "price_btc": "0.00034399", 1471 | "24h_volume_usd": "5606770.0", 1472 | "market_cap_usd": "238448247.0", 1473 | "available_supply": "74836171.0", 1474 | "total_supply": "150000000.0", 1475 | "max_supply": null, 1476 | "percent_change_1h": "6.32", 1477 | "percent_change_24h": "29.89", 1478 | "percent_change_7d": "-22.68", 1479 | "last_updated": "1517666661" 1480 | }, 1481 | { 1482 | "id": "nxt", 1483 | "name": "Nxt", 1484 | "symbol": "NXT", 1485 | "rank": "88", 1486 | "price_usd": "0.233468", 1487 | "price_btc": "0.00002531", 1488 | "24h_volume_usd": "8399120.0", 1489 | "market_cap_usd": "233234518.0", 1490 | "available_supply": "998999942.0", 1491 | "total_supply": "998999942.0", 1492 | "max_supply": "1000000000.0", 1493 | "percent_change_1h": "2.68", 1494 | "percent_change_24h": "12.77", 1495 | "percent_change_7d": "-26.34", 1496 | "last_updated": "1517666941" 1497 | }, 1498 | { 1499 | "id": "reddcoin", 1500 | "name": "ReddCoin", 1501 | "symbol": "RDD", 1502 | "rank": "89", 1503 | "price_usd": "0.00808134", 1504 | "price_btc": "0.00000088", 1505 | "24h_volume_usd": "4337180.0", 1506 | "market_cap_usd": "232258160.0", 1507 | "available_supply": "28740055495.0", 1508 | "total_supply": "28740055495.0", 1509 | "max_supply": null, 1510 | "percent_change_1h": "3.1", 1511 | "percent_change_24h": "24.53", 1512 | "percent_change_7d": "-32.12", 1513 | "last_updated": "1517666941" 1514 | }, 1515 | { 1516 | "id": "request-network", 1517 | "name": "Request Network", 1518 | "symbol": "REQ", 1519 | "rank": "90", 1520 | "price_usd": "0.350814", 1521 | "price_btc": "0.00003787", 1522 | "24h_volume_usd": "7338390.0", 1523 | "market_cap_usd": "225004476.0", 1524 | "available_supply": "641378269.0", 1525 | "total_supply": "999999999.0", 1526 | "max_supply": null, 1527 | "percent_change_1h": "2.17", 1528 | "percent_change_24h": "17.14", 1529 | "percent_change_7d": "-24.1", 1530 | "last_updated": "1517666662" 1531 | }, 1532 | { 1533 | "id": "ignis", 1534 | "name": "Ignis", 1535 | "symbol": "IGNIS", 1536 | "rank": "91", 1537 | "price_usd": "0.293908", 1538 | "price_btc": "0.00003173", 1539 | "24h_volume_usd": "19936000.0", 1540 | "market_cap_usd": "223706296.0", 1541 | "available_supply": "761143950.0", 1542 | "total_supply": "999449694.0", 1543 | "max_supply": "999449694.0", 1544 | "percent_change_1h": "1.92", 1545 | "percent_change_24h": "18.32", 1546 | "percent_change_7d": "-34.93", 1547 | "last_updated": "1517666665" 1548 | }, 1549 | { 1550 | "id": "particl", 1551 | "name": "Particl", 1552 | "symbol": "PART", 1553 | "rank": "92", 1554 | "price_usd": "24.4861", 1555 | "price_btc": "0.0026435", 1556 | "24h_volume_usd": "740204.0", 1557 | "market_cap_usd": "216911938.0", 1558 | "available_supply": "8858574.0", 1559 | "total_supply": "8858574.0", 1560 | "max_supply": null, 1561 | "percent_change_1h": "3.25", 1562 | "percent_change_24h": "22.57", 1563 | "percent_change_7d": "-26.29", 1564 | "last_updated": "1517666658" 1565 | }, 1566 | { 1567 | "id": "nexus", 1568 | "name": "Nexus", 1569 | "symbol": "NXS", 1570 | "rank": "93", 1571 | "price_usd": "3.90077", 1572 | "price_btc": "0.00042112", 1573 | "24h_volume_usd": "2530920.0", 1574 | "market_cap_usd": "216083961.0", 1575 | "available_supply": "55395207.0", 1576 | "total_supply": "55395207.0", 1577 | "max_supply": null, 1578 | "percent_change_1h": "0.12", 1579 | "percent_change_24h": "15.81", 1580 | "percent_change_7d": "-37.18", 1581 | "last_updated": "1517666644" 1582 | }, 1583 | { 1584 | "id": "maidsafecoin", 1585 | "name": "MaidSafeCoin", 1586 | "symbol": "MAID", 1587 | "rank": "94", 1588 | "price_usd": "0.467232", 1589 | "price_btc": "0.00005044", 1590 | "24h_volume_usd": "2512080.0", 1591 | "market_cap_usd": "211446969.0", 1592 | "available_supply": "452552412.0", 1593 | "total_supply": "452552412.0", 1594 | "max_supply": null, 1595 | "percent_change_1h": "4.02", 1596 | "percent_change_24h": "18.12", 1597 | "percent_change_7d": "-30.82", 1598 | "last_updated": "1517666643" 1599 | }, 1600 | { 1601 | "id": "tenx", 1602 | "name": "TenX", 1603 | "symbol": "PAY", 1604 | "rank": "95", 1605 | "price_usd": "1.99306", 1606 | "price_btc": "0.00021517", 1607 | "24h_volume_usd": "5786040.0", 1608 | "market_cap_usd": "208596271.0", 1609 | "available_supply": "104661310.0", 1610 | "total_supply": "205218256.0", 1611 | "max_supply": null, 1612 | "percent_change_1h": "3.06", 1613 | "percent_change_24h": "12.94", 1614 | "percent_change_7d": "-18.27", 1615 | "last_updated": "1517666656" 1616 | }, 1617 | { 1618 | "id": "bancor", 1619 | "name": "Bancor", 1620 | "symbol": "BNT", 1621 | "rank": "96", 1622 | "price_usd": "6.17499", 1623 | "price_btc": "0.00066664", 1624 | "24h_volume_usd": "8680650.0", 1625 | "market_cap_usd": "201501348.0", 1626 | "available_supply": "32631850.0", 1627 | "total_supply": "75345863.0", 1628 | "max_supply": null, 1629 | "percent_change_1h": "2.4", 1630 | "percent_change_24h": "9.61", 1631 | "percent_change_7d": "-14.57", 1632 | "last_updated": "1517666656" 1633 | }, 1634 | { 1635 | "id": "iconomi", 1636 | "name": "Iconomi", 1637 | "symbol": "ICN", 1638 | "rank": "97", 1639 | "price_usd": "2.00714", 1640 | "price_btc": "0.00021669", 1641 | "24h_volume_usd": "2657190.0", 1642 | "market_cap_usd": "200183487.0", 1643 | "available_supply": "99735687.0", 1644 | "total_supply": "99735687.0", 1645 | "max_supply": null, 1646 | "percent_change_1h": "2.71", 1647 | "percent_change_24h": "7.63", 1648 | "percent_change_7d": "-20.5", 1649 | "last_updated": "1517666652" 1650 | }, 1651 | { 1652 | "id": "wax", 1653 | "name": "WAX", 1654 | "symbol": "WAX", 1655 | "rank": "98", 1656 | "price_usd": "0.39391", 1657 | "price_btc": "0.00004253", 1658 | "24h_volume_usd": "4755330.0", 1659 | "market_cap_usd": "194179722.0", 1660 | "available_supply": "492954537.0", 1661 | "total_supply": "1850000000.0", 1662 | "max_supply": null, 1663 | "percent_change_1h": "2.75", 1664 | "percent_change_24h": "19.51", 1665 | "percent_change_7d": "-56.23", 1666 | "last_updated": "1517666665" 1667 | }, 1668 | { 1669 | "id": "gnosis-gno", 1670 | "name": "Gnosis", 1671 | "symbol": "GNO", 1672 | "rank": "99", 1673 | "price_usd": "172.55", 1674 | "price_btc": "0.0186283", 1675 | "24h_volume_usd": "804870.0", 1676 | "market_cap_usd": "190597005.0", 1677 | "available_supply": "1104590.0", 1678 | "total_supply": "10000000.0", 1679 | "max_supply": null, 1680 | "percent_change_1h": "3.14", 1681 | "percent_change_24h": "13.1", 1682 | "percent_change_7d": "-22.47", 1683 | "last_updated": "1517666655" 1684 | }, 1685 | { 1686 | "id": "quantstamp", 1687 | "name": "Quantstamp", 1688 | "symbol": "QSP", 1689 | "rank": "100", 1690 | "price_usd": "0.305889", 1691 | "price_btc": "0.00003302", 1692 | "24h_volume_usd": "9250870.0", 1693 | "market_cap_usd": "188829614.0", 1694 | "available_supply": "617314171.0", 1695 | "total_supply": "976442388.0", 1696 | "max_supply": null, 1697 | "percent_change_1h": "3.95", 1698 | "percent_change_24h": "29.27", 1699 | "percent_change_7d": "-27.59", 1700 | "last_updated": "1517666664" 1701 | } 1702 | ] 1703 | -------------------------------------------------------------------------------- /Exploring the evolution of Linux/datasets/git_log.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/estraviz/Datacamp-Projects/345097e56c335c078791366ad362ba760f0e5c95/Exploring the evolution of Linux/datasets/git_log.gz -------------------------------------------------------------------------------- /Exploring the evolution of Linux/datasets/git_log_excerpt.csv: -------------------------------------------------------------------------------- 1 | 1502382966#Linus Torvalds 2 | 1501368308#Max Gurtovoy 3 | 1501625560#James Smart 4 | 1501625559#James Smart 5 | 1500568442#Martin Wilck 6 | 1502273719#Xin Long 7 | 1502278684#Nikolay Borisov 8 | 1502238384#Girish Moodalbail 9 | 1502228709#Florian Fainelli 10 | 1502223836#Jon Paul Maloy -------------------------------------------------------------------------------- /Exploring the evolution of Linux/img/ATTRIBUTION_tux_png.txt: -------------------------------------------------------------------------------- 1 | This is the Linux-penguin again... 2 | 3 | Originally drewn by Larry Ewing (http://www.isc.tamu.edu/~lewing/) 4 | (with the GIMP) the Linux Logo has been vectorized by me (Simon Budig, 5 | http://www.home.unix-ag.org/simon/). 6 | 7 | This happened quite some time ago with Corel Draw 4. But luckily 8 | meanwhile there are tools available to handle vector graphics with 9 | Linux. Bernhard Herzog (bernhard@users.sourceforge.net) deserves kudos 10 | for creating Sketch (http://sketch.sourceforge.net), a powerful free 11 | tool for creating vector graphics. He converted the Corel Draw file to 12 | the Sketch native format. Since I am unable to maintain the Corel Draw 13 | file any longer, the Sketch version now is the "official" one. 14 | 15 | Anja Gerwinski (anja@gerwinski.de) has created an alternate version of 16 | the penguin (penguin-variant.sk) with a thinner mouth line and slightly 17 | altered gradients. It also features a nifty drop shadow. 18 | 19 | The third bird (penguin-flat.sk) is a version reduced to three colors 20 | (black/white/yellow) for e.g. silk screen printing. I made this version 21 | for a mug, available at the friendly folks at 22 | http://www.kernelconcepts.de/ - they do good stuff, mail Petra 23 | (pinguin@kernelconcepts.de) if you need something special or don't 24 | understand the german :-) 25 | 26 | These drawings are copyrighted by Larry Ewing and Simon Budig 27 | (penguin-variant.sk also by Anja Gerwinski), redistribution is free but 28 | has to include this README/Copyright notice. 29 | 30 | The use of these drawings is free. However I am happy about a sample of 31 | your mug/t-shirt/whatever with this penguin on it... 32 | 33 | Have fun 34 | Simon Budig 35 | 36 | 37 | Simon.Budig@unix-ag.org 38 | http://www.home.unix-ag.org/simon/ 39 | 40 | Simon Budig 41 | Am Hardtkoeppel 2 42 | D-61279 Graevenwiesbach 43 | 44 | -------------------------------------------------------------------------------- /Exploring the evolution of Linux/img/tux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/estraviz/Datacamp-Projects/345097e56c335c078791366ad362ba760f0e5c95/Exploring the evolution of Linux/img/tux.png -------------------------------------------------------------------------------- /Exploring the evolution of Linux/notebook.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "dc": { 7 | "key": "4" 8 | }, 9 | "deletable": false, 10 | "editable": false, 11 | "run_control": { 12 | "frozen": true 13 | }, 14 | "tags": [ 15 | "context" 16 | ] 17 | }, 18 | "source": [ 19 | "## 1. Introduction\n", 20 | "

Version control repositories like CVS, Subversion or Git can be a real gold mine for software developers. They contain every change to the source code including the date (the \"when\"), the responsible developer (the \"who\"), as well as little message that describes the intention (the \"what\") of a change.

\n", 21 | "

\n", 22 | "\"Tux\n", 23 | "

\n", 24 | "

In this notebook, we will analyze the evolution of a very famous open-source project – the Linux kernel. The Linux kernel is the heart of some Linux distributions like Debian, Ubuntu or CentOS.

\n", 25 | "

We get some first insights into the work of the development efforts by

\n", 26 | "\n", 30 | "

Linus Torvalds, the (spoiler alert!) main contributor to the Linux kernel (and also the creator of Git), created a mirror of the Linux repository on GitHub. It contains the complete history of kernel development for the last 13 years.

\n", 31 | "

For our analysis, we will use a Git log file with the following content:

" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": 1, 37 | "metadata": { 38 | "dc": { 39 | "key": "4" 40 | }, 41 | "tags": [ 42 | "sample_code" 43 | ] 44 | }, 45 | "outputs": [ 46 | { 47 | "name": "stdout", 48 | "output_type": "stream", 49 | "text": [ 50 | "1502382966#Linus Torvalds\n", 51 | "1501368308#Max Gurtovoy\n", 52 | "1501625560#James Smart\n", 53 | "1501625559#James Smart\n", 54 | "1500568442#Martin Wilck\n", 55 | "1502273719#Xin Long\n", 56 | "1502278684#Nikolay Borisov\n", 57 | "1502238384#Girish Moodalbail\n", 58 | "1502228709#Florian Fainelli\n", 59 | "1502223836#Jon Paul Maloy\n" 60 | ] 61 | } 62 | ], 63 | "source": [ 64 | "# Printing the content of git_log_excerpt.csv\n", 65 | "with open(\"datasets/git_log_excerpt.csv\", \"r\") as file:\n", 66 | " print(file.read())" 67 | ] 68 | }, 69 | { 70 | "cell_type": "markdown", 71 | "metadata": { 72 | "dc": { 73 | "key": "11" 74 | }, 75 | "deletable": false, 76 | "editable": false, 77 | "run_control": { 78 | "frozen": true 79 | }, 80 | "tags": [ 81 | "context" 82 | ] 83 | }, 84 | "source": [ 85 | "## 2. Reading in the dataset\n", 86 | "

The dataset was created by using the command git log --encoding=latin-1 --pretty=\"%at#%aN\". The latin-1 encoded text output was saved in a header-less csv file. In this file, each row is a commit entry with the following information:

\n", 87 | "\n", 91 | "

The columns are separated by the number sign #. The complete dataset is in the datasets/ directory. It is a gz-compressed csv file named git_log.gz.

" 92 | ] 93 | }, 94 | { 95 | "cell_type": "code", 96 | "execution_count": 2, 97 | "metadata": { 98 | "dc": { 99 | "key": "11" 100 | }, 101 | "tags": [ 102 | "sample_code" 103 | ] 104 | }, 105 | "outputs": [ 106 | { 107 | "data": { 108 | "text/html": [ 109 | "
\n", 110 | "\n", 123 | "\n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | "
timestampauthor
01502826583Linus Torvalds
11501749089Adrian Hunter
21501749088Adrian Hunter
31501882480Kees Cook
41497271395Rob Clark
\n", 159 | "
" 160 | ], 161 | "text/plain": [ 162 | " timestamp author\n", 163 | "0 1502826583 Linus Torvalds\n", 164 | "1 1501749089 Adrian Hunter\n", 165 | "2 1501749088 Adrian Hunter\n", 166 | "3 1501882480 Kees Cook\n", 167 | "4 1497271395 Rob Clark" 168 | ] 169 | }, 170 | "execution_count": 2, 171 | "metadata": {}, 172 | "output_type": "execute_result" 173 | } 174 | ], 175 | "source": [ 176 | "# Loading in the pandas module\n", 177 | "import pandas as pd\n", 178 | "\n", 179 | "# Reading in the log file\n", 180 | "git_log = pd.read_csv(\"datasets/git_log.gz\", sep='#', encoding='latin-1', header=None, names=['timestamp', 'author'], compression='gzip')\n", 181 | "\n", 182 | "# Printing out the first 5 rows\n", 183 | "git_log.head(5)" 184 | ] 185 | }, 186 | { 187 | "cell_type": "markdown", 188 | "metadata": { 189 | "dc": { 190 | "key": "18" 191 | }, 192 | "deletable": false, 193 | "editable": false, 194 | "run_control": { 195 | "frozen": true 196 | }, 197 | "tags": [ 198 | "context" 199 | ] 200 | }, 201 | "source": [ 202 | "## 3. Getting an overview\n", 203 | "

The dataset contains the information about every single code contribution (a \"commit\") to the Linux kernel over the last 13 years. We'll first take a look at the number of authors and their commits to the repository.

" 204 | ] 205 | }, 206 | { 207 | "cell_type": "code", 208 | "execution_count": 3, 209 | "metadata": { 210 | "dc": { 211 | "key": "18" 212 | }, 213 | "tags": [ 214 | "sample_code" 215 | ] 216 | }, 217 | "outputs": [ 218 | { 219 | "name": "stdout", 220 | "output_type": "stream", 221 | "text": [ 222 | "17385 authors committed 699071 code changes.\n" 223 | ] 224 | } 225 | ], 226 | "source": [ 227 | "# calculating number of commits\n", 228 | "number_of_commits = len(git_log)\n", 229 | "\n", 230 | "# calculating number of authors\n", 231 | "number_of_authors = len(git_log.query(\"author != ''\").groupby('author'))\n", 232 | "\n", 233 | "# printing out the results\n", 234 | "print(\"%s authors committed %s code changes.\" % (number_of_authors, number_of_commits))" 235 | ] 236 | }, 237 | { 238 | "cell_type": "markdown", 239 | "metadata": { 240 | "dc": { 241 | "key": "25" 242 | }, 243 | "deletable": false, 244 | "editable": false, 245 | "run_control": { 246 | "frozen": true 247 | }, 248 | "tags": [ 249 | "context" 250 | ] 251 | }, 252 | "source": [ 253 | "## 4. Finding the TOP 10 contributors\n", 254 | "

There are some very important people that changed the Linux kernel very often. To see if there are any bottlenecks, we take a look at the TOP 10 authors with the most commits.

" 255 | ] 256 | }, 257 | { 258 | "cell_type": "code", 259 | "execution_count": 4, 260 | "metadata": { 261 | "dc": { 262 | "key": "25" 263 | }, 264 | "tags": [ 265 | "sample_code" 266 | ] 267 | }, 268 | "outputs": [ 269 | { 270 | "data": { 271 | "text/html": [ 272 | "
\n", 273 | "\n", 286 | "\n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | "
timestamp
author
Linus Torvalds23361
David S. Miller9106
Mark Brown6802
Takashi Iwai6209
Al Viro6006
H Hartley Sweeten5938
Ingo Molnar5344
Mauro Carvalho Chehab5204
Arnd Bergmann4890
Greg Kroah-Hartman4580
\n", 340 | "
" 341 | ], 342 | "text/plain": [ 343 | " timestamp\n", 344 | "author \n", 345 | "Linus Torvalds 23361\n", 346 | "David S. Miller 9106\n", 347 | "Mark Brown 6802\n", 348 | "Takashi Iwai 6209\n", 349 | "Al Viro 6006\n", 350 | "H Hartley Sweeten 5938\n", 351 | "Ingo Molnar 5344\n", 352 | "Mauro Carvalho Chehab 5204\n", 353 | "Arnd Bergmann 4890\n", 354 | "Greg Kroah-Hartman 4580" 355 | ] 356 | }, 357 | "execution_count": 4, 358 | "metadata": {}, 359 | "output_type": "execute_result" 360 | } 361 | ], 362 | "source": [ 363 | "# Listing top 10 authors\n", 364 | "top_10_authors = git_log.groupby('author').count().apply(lambda x: x.sort_values(ascending=False)).head(10)\n", 365 | "\n", 366 | "top_10_authors" 367 | ] 368 | }, 369 | { 370 | "cell_type": "markdown", 371 | "metadata": { 372 | "dc": { 373 | "key": "32" 374 | }, 375 | "deletable": false, 376 | "editable": false, 377 | "run_control": { 378 | "frozen": true 379 | }, 380 | "tags": [ 381 | "context" 382 | ] 383 | }, 384 | "source": [ 385 | "## 5. Wrangling the data\n", 386 | "

For our analysis, we want to visualize the contributions over time. For this, we use the information in the timestamp column to create a time series-based column.

" 387 | ] 388 | }, 389 | { 390 | "cell_type": "code", 391 | "execution_count": 5, 392 | "metadata": { 393 | "dc": { 394 | "key": "32" 395 | }, 396 | "tags": [ 397 | "sample_code" 398 | ] 399 | }, 400 | "outputs": [ 401 | { 402 | "data": { 403 | "text/plain": [ 404 | "count 699071\n", 405 | "unique 668448\n", 406 | "top 2008-09-04 05:30:19\n", 407 | "freq 99\n", 408 | "first 1970-01-01 00:00:01\n", 409 | "last 2037-04-25 08:08:26\n", 410 | "Name: timestamp, dtype: object" 411 | ] 412 | }, 413 | "execution_count": 5, 414 | "metadata": {}, 415 | "output_type": "execute_result" 416 | } 417 | ], 418 | "source": [ 419 | "# converting the timestamp column\n", 420 | "git_log.timestamp = pd.to_datetime(git_log.timestamp, unit='s')\n", 421 | "\n", 422 | "# summarizing the converted timestamp column\n", 423 | "git_log.timestamp.describe()" 424 | ] 425 | }, 426 | { 427 | "cell_type": "markdown", 428 | "metadata": { 429 | "dc": { 430 | "key": "39" 431 | }, 432 | "deletable": false, 433 | "editable": false, 434 | "run_control": { 435 | "frozen": true 436 | }, 437 | "tags": [ 438 | "context" 439 | ] 440 | }, 441 | "source": [ 442 | "## 6. Treating wrong timestamps\n", 443 | "

As we can see from the results above, some contributors had their operating system's time incorrectly set when they committed to the repository. We'll clean up the timestamp column by dropping the rows with the incorrect timestamps.

" 444 | ] 445 | }, 446 | { 447 | "cell_type": "code", 448 | "execution_count": 6, 449 | "metadata": { 450 | "dc": { 451 | "key": "39" 452 | }, 453 | "tags": [ 454 | "sample_code" 455 | ] 456 | }, 457 | "outputs": [ 458 | { 459 | "data": { 460 | "text/plain": [ 461 | "count 698569\n", 462 | "unique 667977\n", 463 | "top 2008-09-04 05:30:19\n", 464 | "freq 99\n", 465 | "first 2005-04-16 22:20:36\n", 466 | "last 2017-10-03 12:57:00\n", 467 | "Name: timestamp, dtype: object" 468 | ] 469 | }, 470 | "execution_count": 6, 471 | "metadata": {}, 472 | "output_type": "execute_result" 473 | } 474 | ], 475 | "source": [ 476 | "# determining the first real commit timestamp\n", 477 | "first_commit_timestamp = git_log.iloc[-1].timestamp\n", 478 | "\n", 479 | "# determining the last sensible commit timestamp\n", 480 | "last_commit_timestamp = pd.to_datetime('now')\n", 481 | "\n", 482 | "# filtering out wrong timestamps\n", 483 | "corrected_log = git_log[(first_commit_timestamp <= git_log.timestamp) & (git_log.timestamp <= last_commit_timestamp)]\n", 484 | "\n", 485 | "# summarizing the corrected timestamp column\n", 486 | "corrected_log['timestamp'].describe()" 487 | ] 488 | }, 489 | { 490 | "cell_type": "markdown", 491 | "metadata": { 492 | "dc": { 493 | "key": "46" 494 | }, 495 | "deletable": false, 496 | "editable": false, 497 | "run_control": { 498 | "frozen": true 499 | }, 500 | "tags": [ 501 | "context" 502 | ] 503 | }, 504 | "source": [ 505 | "## 7. Grouping commits per year\n", 506 | "

To find out how the development activity has increased over time, we'll group the commits by year and count them up.

" 507 | ] 508 | }, 509 | { 510 | "cell_type": "code", 511 | "execution_count": 7, 512 | "metadata": { 513 | "dc": { 514 | "key": "46" 515 | }, 516 | "tags": [ 517 | "sample_code" 518 | ] 519 | }, 520 | "outputs": [ 521 | { 522 | "data": { 523 | "text/html": [ 524 | "
\n", 525 | "\n", 538 | "\n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | "
num_commits
timestamp
2005-01-0116229
2006-01-0129255
2007-01-0133759
2008-01-0148847
2009-01-0152572
\n", 572 | "
" 573 | ], 574 | "text/plain": [ 575 | " num_commits\n", 576 | "timestamp \n", 577 | "2005-01-01 16229\n", 578 | "2006-01-01 29255\n", 579 | "2007-01-01 33759\n", 580 | "2008-01-01 48847\n", 581 | "2009-01-01 52572" 582 | ] 583 | }, 584 | "execution_count": 7, 585 | "metadata": {}, 586 | "output_type": "execute_result" 587 | } 588 | ], 589 | "source": [ 590 | "# Counting the no. commits per year\n", 591 | "commits_per_year = corrected_log.groupby(pd.Grouper(key='timestamp', freq='AS')).count()\n", 592 | "commits_per_year.rename(columns={'author': 'num_commits'}, inplace=True)\n", 593 | "\n", 594 | "# Listing the first rows\n", 595 | "commits_per_year.head(5)" 596 | ] 597 | }, 598 | { 599 | "cell_type": "markdown", 600 | "metadata": { 601 | "dc": { 602 | "key": "53" 603 | }, 604 | "deletable": false, 605 | "editable": false, 606 | "run_control": { 607 | "frozen": true 608 | }, 609 | "tags": [ 610 | "context" 611 | ] 612 | }, 613 | "source": [ 614 | "## 8. Visualizing the history of Linux\n", 615 | "

Finally, we'll make a plot out of these counts to better see how the development effort on Linux has increased over the the last few years.

" 616 | ] 617 | }, 618 | { 619 | "cell_type": "code", 620 | "execution_count": 8, 621 | "metadata": { 622 | "dc": { 623 | "key": "53" 624 | }, 625 | "tags": [ 626 | "sample_code" 627 | ] 628 | }, 629 | "outputs": [ 630 | { 631 | "data": { 632 | "image/png": "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\n", 633 | "text/plain": [ 634 | "" 635 | ] 636 | }, 637 | "metadata": {}, 638 | "output_type": "display_data" 639 | } 640 | ], 641 | "source": [ 642 | "# Setting up plotting in Jupyter notebooks\n", 643 | "%matplotlib inline\n", 644 | "\n", 645 | "# plot the data\n", 646 | "years = commits_per_year.index.year\n", 647 | "ax = commits_per_year.plot.bar(legend=False)\n", 648 | "ax.set_title('Commits per year on github')\n", 649 | "ax.set_xticklabels(years)\n", 650 | "ax.set_xlabel('years')\n", 651 | "ax.set_ylabel('number of commits');" 652 | ] 653 | }, 654 | { 655 | "cell_type": "markdown", 656 | "metadata": { 657 | "dc": { 658 | "key": "60" 659 | }, 660 | "deletable": false, 661 | "editable": false, 662 | "run_control": { 663 | "frozen": true 664 | }, 665 | "tags": [ 666 | "context" 667 | ] 668 | }, 669 | "source": [ 670 | "## 9. Conclusion\n", 671 | "

Thanks to the solid foundation and caretaking of Linux Torvalds, many other developers are now able to contribute to the Linux kernel as well. There is no decrease of development activity at sight!

" 672 | ] 673 | }, 674 | { 675 | "cell_type": "code", 676 | "execution_count": 9, 677 | "metadata": { 678 | "dc": { 679 | "key": "60" 680 | }, 681 | "tags": [ 682 | "sample_code" 683 | ] 684 | }, 685 | "outputs": [ 686 | { 687 | "name": "stdout", 688 | "output_type": "stream", 689 | "text": [ 690 | "2016\n" 691 | ] 692 | } 693 | ], 694 | "source": [ 695 | "# calculating or setting the year with the most commits to Linux\n", 696 | "year_with_most_commits = commits_per_year[commits_per_year == commits_per_year.max()].sort_values(by='num_commits').head(1).reset_index()['timestamp'].dt.year\n", 697 | "print(year_with_most_commits[0])" 698 | ] 699 | } 700 | ], 701 | "metadata": { 702 | "kernelspec": { 703 | "display_name": "Python 3", 704 | "language": "python", 705 | "name": "python3" 706 | }, 707 | "language_info": { 708 | "codemirror_mode": { 709 | "name": "ipython", 710 | "version": 3 711 | }, 712 | "file_extension": ".py", 713 | "mimetype": "text/x-python", 714 | "name": "python", 715 | "nbconvert_exporter": "python", 716 | "pygments_lexer": "ipython3", 717 | "version": "3.6.4" 718 | } 719 | }, 720 | "nbformat": 4, 721 | "nbformat_minor": 2 722 | } 723 | -------------------------------------------------------------------------------- /Introduction to DataCamp Projects/notebook.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"cells":[{"cell_type":"markdown","source":"## 1. This is a Jupyter notebook!\n

A Jupyter notebook is a document that contains text cells (what you're reading right now) and code cells. What is special with a notebook is that it's interactive: You can change or add code cells, and then run a cell by first selecting it and then clicking the run cell button above ( ▶| Run ) or hitting ctrl + enter.

\n

\"\"

\n

The result will be displayed directly in the notebook. You could use a notebook as a simple calculator. For example, it's estimated that on average 256 children were born every minute in 2016. The code cell below calculates how many children were born on average on a day.

","metadata":{"tags":["context"],"deletable":false,"run_control":{"frozen":true},"editable":false,"dc":{"key":"8c3ba502e2"}}},{"cell_type":"code","execution_count":43,"outputs":[{"metadata":{},"data":{"text/plain":"368640"},"execution_count":43,"output_type":"execute_result"}],"source":"# I'm a code cell, click me, then run me!\n256 * 60 * 24 # Children × minutes × hours","metadata":{"tags":["sample_code"],"trusted":true,"dc":{"key":"8c3ba502e2"}}},{"cell_type":"markdown","source":"## 2. Put _any_ code in code cells\n

But a code cell can contain much more than a simple one-liner! This is a notebook running python and you can put any python code in a code cell (but notebooks can run other languages too, like R). Below is a code cell where we define a whole new function (greet). To show the output of greet we run it last in the code cell as the last value is always printed out.

","metadata":{"tags":["context"],"deletable":false,"run_control":{"frozen":true},"editable":false,"dc":{"key":"b5ed313abb"}}},{"cell_type":"code","execution_count":45,"outputs":[{"metadata":{},"data":{"text/plain":"'My name is Estraviz, Javier Estraviz!'"},"execution_count":45,"output_type":"execute_result"}],"source":"def greet(first_name, last_name):\n greeting = 'My name is ' + last_name + ', ' + first_name + ' ' + last_name + '!'\n return greeting\n\n# Replace with your first and last name.\n# That is, unless your name is already James Bond.\ngreet('Javier', 'Estraviz')","metadata":{"tags":["sample_code"],"trusted":true,"dc":{"key":"b5ed313abb"}}},{"cell_type":"markdown","source":"## 3. Jupyter notebooks ♡ data\n

We've seen that notebooks can display basic objects such as numbers and strings. But notebooks also support the objects used in data science, which makes them great for interactive data analysis!

\n

For example, below we create a pandas DataFrame by reading in a csv-file with the average global temperature for the years 1850 to 2016. If we look at the head of this DataFrame the notebook will render it as a nice-looking table.

","metadata":{"tags":["context"],"deletable":false,"run_control":{"frozen":true},"editable":false,"dc":{"key":"d71cd3b937"}}},{"cell_type":"code","execution_count":47,"outputs":[{"metadata":{},"data":{"text/plain":" year degrees_celsius\n0 1850 7.74\n1 1851 8.09","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
yeardegrees_celsius
018507.74
118518.09
\n
"},"execution_count":47,"output_type":"execute_result"}],"source":"# Importing the pandas module\nimport pandas as pd\n\n# Reading in the global temperature data,data\nglobal_temp = pd.read_csv('datasets/global_temperature.csv')\n\n# Take a look at the first datapoints\nglobal_temp.head(2)","metadata":{"tags":["sample_code"],"trusted":true,"dc":{"key":"d71cd3b937"}}},{"cell_type":"markdown","source":"## 4. Jupyter notebooks ♡ plots\n

Tables are nice but — as the saying goes — \"a plot can show a thousand data points\". Notebooks handle plots as well, but it requires a bit of magic. Here magic does not refer to any arcane rituals but to so-called \"magic commands\" that affect how the Jupyter notebook works. Magic commands start with either % or %% and the command we need to nicely display plots inline is %matplotlib inline. With this magic in place, all plots created in code cells will automatically be displayed inline.

\n

Let's take a look at the global temperature for the last 150 years.

","metadata":{"tags":["context"],"deletable":false,"run_control":{"frozen":true},"editable":false,"dc":{"key":"4c4219b8e7"}}},{"cell_type":"code","execution_count":49,"outputs":[{"metadata":{},"data":{"text/plain":""},"execution_count":49,"output_type":"execute_result"},{"data":{"image/png":"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\nB0HCp7Fpkls8AAAAAElFTkSuQmCC\n","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":"# Setting up inline plotting using jupyter notebook \"magic\"\n%matplotlib inline\n\nimport matplotlib.pyplot as plt\n\n# Plotting global temperature in degrees celsius by year.\nplt.plot(global_temp['year'], global_temp['degrees_celsius'])\n\n# Adding some nice labels \nplt.xlabel('year') \nplt.ylabel('temp (°C)') ","metadata":{"tags":["sample_code"],"trusted":true,"dc":{"key":"4c4219b8e7"}}},{"cell_type":"markdown","source":"## 5. Jupyter notebooks ♡ a lot more\n

Tables and plots are the most common outputs when doing data analysis, but Jupyter notebooks can render many more types of outputs such as sound, animation, video, etc. Yes, almost anything that can be shown in a modern web browser. This also makes it possible to include interactive widgets directly in the notebook!

\n

For example, this (slightly complicated) code will create an interactive map showing the locations of the three largest smartphone companies in 2016. You can move and zoom the map, and you can click the markers for more info!

","metadata":{"tags":["context"],"deletable":false,"run_control":{"frozen":true},"editable":false,"dc":{"key":"1df3b07b44"}}},{"cell_type":"code","execution_count":51,"outputs":[{"metadata":{},"data":{"text/plain":"","text/html":"
"},"execution_count":51,"output_type":"execute_result"}],"source":"# Making a map using the folium module\nimport folium\nphone_map = folium.Map()\n\n# Top three smart phone companies by market share in 2016.\ncompanies = [\n {'loc': [37.4970, 127.0266], 'label': 'Samsung: 20.5%'},\n {'loc': [37.3318, -122.0311], 'label': 'Apple: 14.4%'},\n {'loc': [22.5431, 114.0579], 'label': 'Huawei: 8.9%'}] \n\n# Adding markers to the map.\nfor company in companies:\n marker = folium.Marker(location=company['loc'], popup=company['label'])\n marker.add_to(phone_map)\n\n# The last object in the cell always gets shown in the notebook\nphone_map","metadata":{"tags":["sample_code"],"trusted":true,"dc":{"key":"1df3b07b44"}}},{"cell_type":"markdown","source":"## 6. Goodbye for now!\n

This was just a short introduction to Jupyter notebooks, an open source technology that is increasingly used for data science and analysis. I hope you enjoyed it! :)

","metadata":{"tags":["context"],"deletable":false,"run_control":{"frozen":true},"editable":false,"dc":{"key":"9ccef156d2"}}},{"cell_type":"code","execution_count":53,"outputs":[],"source":"# Are you ready to get started with DataCamp projects?\nI_am_ready = True\n\n# Ps. \n# Feel free to try out any other stuff in this notebook. \n# It's all yours!","metadata":{"tags":["sample_code"],"trusted":true,"collapsed":true,"dc":{"key":"9ccef156d2"}}}],"nbformat_minor":2,"metadata":{"language_info":{"codemirror_mode":{"name":"ipython","version":3},"mimetype":"text/x-python","version":"3.5.2","pygments_lexer":"ipython3","nbconvert_exporter":"python","name":"python","file_extension":".py"},"kernelspec":{"name":"python3","language":"python","display_name":"Python 3"}}} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DataCamp Projects 2 | 3 | My solutions to [DataCamp Projects](https://www.datacamp.com/projects). 4 | --------------------------------------------------------------------------------