{ "cells": [ { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "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", "
raw
076d034edcf658 Documentation/scheduler/sched-pe...
176d034edcf658 Documentation/scheduler/sched-pe...
276d034edcf658 Documentation/scheduler/sched-pe...
\n", "
" ], "text/plain": [ " raw\n", "0 76d034edcf658 Documentation/scheduler/sched-pe...\n", "1 76d034edcf658 Documentation/scheduler/sched-pe...\n", "2 76d034edcf658 Documentation/scheduler/sched-pe..." ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "blame_raw = pd.DataFrame([\n", " r\"76d034edcf658 Documentation/scheduler/sched-pelt.c (Yuyang Du 2017-02-13 05:44:22 +0800 1) /*\",\n", " r\"76d034edcf658 Documentation/scheduler/sched-pelt.c (Yuyang Du (Corp) 2017-02-13 05:44:22 +0800 1) /*\",\n", " r\"76d034edcf658 Documentation/scheduler/sched-pelt.c (Yuyang Du 2017-02-13 05:44:22 +0800 1) /*\"],\n", " columns=['raw'])\n", "blame_raw" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "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", "
raw
0linux_blame_temp.log
1NaN
2889d0d42667c9 drivers/scsi/bfa/bfad_drv.h (Ani...
3889d0d42667c9 drivers/scsi/bfa/bfad_drv.h (Ani...
47725ccfda5971 drivers/scsi/bfa/bfad_drv.h (Jin...
\n", "
" ], "text/plain": [ " raw\n", "0 linux_blame_temp.log\n", "1 NaN\n", "2 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h (Ani...\n", "3 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h (Ani...\n", "4 7725ccfda5971 drivers/scsi/bfa/bfad_drv.h (Jin..." ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "PATH = r\"C:/Temp/linux_blame.log\"\n", "PATH = r\"C:\\Users\\Markus\\Downloads\\linux_blame_temp.tar.gz\"\n", "blame_raw = pd.read_csv(PATH, sep=\"\\u0012\", names=[\"raw\"], encoding=\"latin-1\")\n", "blame_raw.head()" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
shapathauthortimestampline
0NaNNaNNaNNaNNaN
1NaNNaNNaNNaNNaN
2889d0d42667c9drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 03:54:45 -05002
3889d0d42667c9drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 03:54:45 -05003
47725ccfda5971drivers/scsi/bfa/bfad_drv.hJing Huang2009-09-23 17:46:15 -07004
\n", "
" ], "text/plain": [ " sha path author \\\n", "0 NaN NaN NaN \n", "1 NaN NaN NaN \n", "2 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy \n", "3 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy \n", "4 7725ccfda5971 drivers/scsi/bfa/bfad_drv.h Jing Huang \n", "\n", " timestamp line \n", "0 NaN NaN \n", "1 NaN NaN \n", "2 2015-11-26 03:54:45 -0500 2 \n", "3 2015-11-26 03:54:45 -0500 3 \n", "4 2009-09-23 17:46:15 -0700 4 " ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "blame = \\\n", " blame_raw.raw.str.extract(\n", " \"(?P.*?) (?P.*?) \\((?P.* ?) (?P[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} .[0-9]{4}) *(?P[0-9]*)\\) .*\",\n", " expand=True)\n", "blame.head()" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5665949\n", "5665946\n" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
shapathauthortimestampline
2889d0d42667c9drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 03:54:45 -05002
3889d0d42667c9drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 03:54:45 -05003
47725ccfda5971drivers/scsi/bfa/bfad_drv.hJing Huang2009-09-23 17:46:15 -07004
5889d0d42667c9drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 03:54:45 -05005
67725ccfda5971drivers/scsi/bfa/bfad_drv.hJing Huang2009-09-23 17:46:15 -07006
\n", "
" ], "text/plain": [ " sha path author \\\n", "2 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy \n", "3 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy \n", "4 7725ccfda5971 drivers/scsi/bfa/bfad_drv.h Jing Huang \n", "5 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy \n", "6 7725ccfda5971 drivers/scsi/bfa/bfad_drv.h Jing Huang \n", "\n", " timestamp line \n", "2 2015-11-26 03:54:45 -0500 2 \n", "3 2015-11-26 03:54:45 -0500 3 \n", "4 2009-09-23 17:46:15 -0700 4 \n", "5 2015-11-26 03:54:45 -0500 5 \n", "6 2009-09-23 17:46:15 -0700 6 " ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(len(blame))\n", "blame = blame.dropna()\n", "print(len(blame))\n", "blame.head()" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
shapathauthortimestampline
2889d0d42667c9drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 03:54:45 -05002
3889d0d42667c9drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 03:54:45 -05003
47725ccfda5971drivers/scsi/bfa/bfad_drv.hJing Huang2009-09-23 17:46:15 -07004
5889d0d42667c9drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 03:54:45 -05005
67725ccfda5971drivers/scsi/bfa/bfad_drv.hJing Huang2009-09-23 17:46:15 -07006
\n", "
" ], "text/plain": [ " sha path author \\\n", "2 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy \n", "3 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy \n", "4 7725ccfda5971 drivers/scsi/bfa/bfad_drv.h Jing Huang \n", "5 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy \n", "6 7725ccfda5971 drivers/scsi/bfa/bfad_drv.h Jing Huang \n", "\n", " timestamp line \n", "2 2015-11-26 03:54:45 -0500 2 \n", "3 2015-11-26 03:54:45 -0500 3 \n", "4 2009-09-23 17:46:15 -0700 4 \n", "5 2015-11-26 03:54:45 -0500 5 \n", "6 2009-09-23 17:46:15 -0700 6 " ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "blame['author'] = blame.author.str.strip()\n", "blame['line'] = pd.to_numeric(blame.line)\n", "blame.head()" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 5665946 entries, 2 to 5665947\n", "Data columns (total 5 columns):\n", "sha object\n", "path object\n", "author object\n", "timestamp object\n", "line int64\n", "dtypes: int64(1), object(4)\n", "memory usage: 1.8 GB\n" ] } ], "source": [ "blame.info(memory_usage=\"deep\")" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 5665946 entries, 2 to 5665947\n", "Data columns (total 5 columns):\n", "sha category\n", "path category\n", "author category\n", "timestamp category\n", "line int64\n", "dtypes: category(4), int64(1)\n", "memory usage: 171.7 MB\n" ] } ], "source": [ "blame.sha = pd.Categorical(blame.sha)\n", "blame.path = pd.Categorical(blame.path)\n", "blame.author = pd.Categorical(blame.author)\n", "blame.timestamp = pd.Categorical(blame.timestamp)\n", "blame.info(memory_usage=\"deep\")" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 5665946 entries, 2 to 5665947\n", "Data columns (total 5 columns):\n", "sha category\n", "path category\n", "author category\n", "timestamp category\n", "line int64\n", "dtypes: category(4), int64(1)\n", "memory usage: 158.3 MB\n" ] } ], "source": [ "blame.info()" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "blame.line.value_counts().plot()" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "94957" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "blame.sha.nunique()" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Linus Torvalds 838200\n", "Hans Verkuil 118432\n", "Mauro Carvalho Chehab 102107\n", "Michael Chan 53945\n", "Mike Marciniszyn 44843\n", "Ralph Campbell 42453\n", "Nicholas Bellinger 41823\n", "Laurent Pinchart 40438\n", "Antti Palosaari 40390\n", "Alexander Duyck 39307\n", "Name: author, dtype: int64" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "blame.author.value_counts().head(10)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10235" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "blame.path.nunique()" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "blame.timestamp = pd.to_datetime(blame.timestamp.str.strip())" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "blame.timestamp.dt.hour.value_counts(sort=False).plot.bar()" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "blame.timestamp.dt.year.value_counts(sort=False).plot.bar()" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "771872 2002-04-09 19:14:34\n", "771879 2002-04-09 19:14:34\n", "771880 2002-04-09 19:14:34\n", "771881 2002-04-09 19:14:34\n", "771882 2002-04-09 19:14:34\n", "Name: timestamp, dtype: datetime64[ns]" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "blame.timestamp.nsmallest()" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
shapathauthortimestampline
2889d0d42667c9drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 08:54:452
3889d0d42667c9drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 08:54:453
47725ccfda5971drivers/scsi/bfa/bfad_drv.hJing Huang2009-09-24 00:46:154
5889d0d42667c9drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 08:54:455
67725ccfda5971drivers/scsi/bfa/bfad_drv.hJing Huang2009-09-24 00:46:156
\n", "
" ], "text/plain": [ " sha path author \\\n", "2 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy \n", "3 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy \n", "4 7725ccfda5971 drivers/scsi/bfa/bfad_drv.h Jing Huang \n", "5 889d0d42667c9 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy \n", "6 7725ccfda5971 drivers/scsi/bfa/bfad_drv.h Jing Huang \n", "\n", " timestamp line \n", "2 2015-11-26 08:54:45 2 \n", "3 2015-11-26 08:54:45 3 \n", "4 2009-09-24 00:46:15 4 \n", "5 2015-11-26 08:54:45 5 \n", "6 2009-09-24 00:46:15 6 " ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "blame.head()" ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2 1448528085000000000\n", "3 1448528085000000000\n", "Name: timestamp, dtype: int64" ] }, "execution_count": 143, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = knowledge_loss.iloc[:2].timestamp\n", "\n", "unix = t.astype('int64')\n", "pd.to_datetime(unix)\n", "unix\n" ] }, { "cell_type": "code", "execution_count": 152, "metadata": {}, "outputs": [ { "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", " \n", "
pathauthortimestampline
0drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy14485280850000000002
1drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy14485280850000000003
2drivers/scsi/bfa/bfad_drv.hJing Huang12537531750000000004
3drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy14485280850000000005
4drivers/scsi/bfa/bfad_drv.hJing Huang12537531750000000006
\n", "
" ], "text/plain": [ " path author timestamp line\n", "0 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 1448528085000000000 2\n", "1 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 1448528085000000000 3\n", "2 drivers/scsi/bfa/bfad_drv.h Jing Huang 1253753175000000000 4\n", "3 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 1448528085000000000 5\n", "4 drivers/scsi/bfa/bfad_drv.h Jing Huang 1253753175000000000 6" ] }, "execution_count": 152, "metadata": {}, "output_type": "execute_result" } ], "source": [ "knowledge_loss = blame[['path', 'author', 'timestamp', 'line']].copy()\n", "knowledge_loss.author = knowledge_loss.author.str.split(\",\")[::-1].str.join(\"\")\n", "knowledge_loss.timestamp = knowledge_loss.timestamp.astype('int64')\n", "knowledge_loss = knowledge_loss.reset_index(drop=True)\n", "knowledge_loss.head()" ] }, { "cell_type": "code", "execution_count": 153, "metadata": {}, "outputs": [], "source": [ "#knowledge_loss.to_csv(\"linux_blame_log.csv\", encoding='utf-8', index=None)" ] }, { "cell_type": "code", "execution_count": 259, "metadata": {}, "outputs": [ { "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", " \n", "
pathauthortimestampline
0drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy14485280850000000001
1drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy14485280850000000002
2drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy14485280850000000003
3drivers/scsi/bfa/bfad_drv.hJing Huang12537531750000000004
4drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy14485280850000000005
\n", "
" ], "text/plain": [ " path author timestamp line\n", "0 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 1448528085000000000 1\n", "1 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 1448528085000000000 2\n", "2 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 1448528085000000000 3\n", "3 drivers/scsi/bfa/bfad_drv.h Jing Huang 1253753175000000000 4\n", "4 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 1448528085000000000 5" ] }, "execution_count": 259, "metadata": {}, "output_type": "execute_result" } ], "source": [ "git_blame = pd.read_csv(\"linux_blame_log.csv\")\n", "git_blame.head()" ] }, { "cell_type": "code", "execution_count": 264, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 5665947 entries, 0 to 5665946\n", "Data columns (total 4 columns):\n", "path category\n", "author category\n", "timestamp datetime64[ns]\n", "line int64\n", "dtypes: category(2), datetime64[ns](1), int64(1)\n", "memory usage: 109.9 MB\n" ] } ], "source": [ "git_blame.info(memory_usage='deep')" ] }, { "cell_type": "code", "execution_count": 265, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 5665947 entries, 0 to 5665946\n", "Data columns (total 4 columns):\n", "path category\n", "author category\n", "timestamp datetime64[ns]\n", "line int64\n", "dtypes: category(2), datetime64[ns](1), int64(1)\n", "memory usage: 109.9 MB\n" ] } ], "source": [ "git_blame.path = pd.Categorical(git_blame.path)\n", "git_blame.author = pd.Categorical(git_blame.author)\n", "git_blame.timestamp = pd.to_datetime(git_blame.timestamp)\n", "git_blame.info(memory_usage='deep')" ] }, { "cell_type": "code", "execution_count": 266, "metadata": {}, "outputs": [ { "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", " \n", "
pathauthortimestampline
0drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 08:54:451
1drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 08:54:452
2drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 08:54:453
3drivers/scsi/bfa/bfad_drv.hJing Huang2009-09-24 00:46:154
4drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 08:54:455
\n", "
" ], "text/plain": [ " path author timestamp line\n", "0 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 2015-11-26 08:54:45 1\n", "1 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 2015-11-26 08:54:45 2\n", "2 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 2015-11-26 08:54:45 3\n", "3 drivers/scsi/bfa/bfad_drv.h Jing Huang 2009-09-24 00:46:15 4\n", "4 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 2015-11-26 08:54:45 5" ] }, "execution_count": 266, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Timestamp('2017-04-19 08:17:56.637322')" ] }, "execution_count": 171, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a_year_ago = pd.Timestamp(\"now\") - pd.DateOffset(years=1)\n", "a_year_ago" ] }, { "cell_type": "code", "execution_count": 172, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 172, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df['knowledge'] = df.timestamp >= a_year_ago\n", "df.knowledge.value_counts().plot.pie()" ] }, { "cell_type": "code", "execution_count": 268, "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "'knowledge'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[1;32mC:\\dev\\apps\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 2524\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2525\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2526\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", "\u001b[1;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", "\u001b[1;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", "\u001b[1;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", "\u001b[1;31mKeyError\u001b[0m: 'knowledge'", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'knowledge'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;32mTrue\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'knowledge'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32mC:\\dev\\apps\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 2137\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2138\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2139\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getitem_column\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2140\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2141\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_getitem_column\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\dev\\apps\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m_getitem_column\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 2144\u001b[0m \u001b[1;31m# get column\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2145\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_unique\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2146\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_item_cache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2147\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2148\u001b[0m \u001b[1;31m# duplicate columns & possible reduce dimensionality\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\dev\\apps\\Anaconda3\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36m_get_item_cache\u001b[1;34m(self, item)\u001b[0m\n\u001b[0;32m 1840\u001b[0m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1841\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mres\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1842\u001b[1;33m \u001b[0mvalues\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1843\u001b[0m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_box_item_values\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalues\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1844\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mres\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\dev\\apps\\Anaconda3\\lib\\site-packages\\pandas\\core\\internals.py\u001b[0m in \u001b[0;36mget\u001b[1;34m(self, item, fastpath)\u001b[0m\n\u001b[0;32m 3841\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3842\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0misna\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3843\u001b[1;33m \u001b[0mloc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3844\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3845\u001b[0m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0misna\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\dev\\apps\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 2525\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2526\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2527\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2528\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2529\u001b[0m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", "\u001b[1;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", "\u001b[1;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", "\u001b[1;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", "\u001b[1;31mKeyError\u001b[0m: 'knowledge'" ] } ], "source": [ "df.kno" ] }, { "cell_type": "code", "execution_count": 212, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "author\n", "Anirudh Venkataramanan 0.035255\n", "Daniel Scheller 0.031052\n", "Yasunari Takiguchi 0.024187\n", "Aviad Krawczyk 0.023526\n", "Stanimir Varbanov 0.020556\n", "Salil 0.019973\n", "Mika Westerberg 0.016489\n", "Todor Tomov 0.015828\n", "Jakub Kicinski 0.015367\n", "Tomer Tayar 0.012627\n", "Name: line, dtype: float64" ] }, "execution_count": 212, "metadata": {}, "output_type": "execute_result" } ], "source": [ "knowledge = df[df.knowledge]\n", "ratio = knowledge.groupby('author').line.count() / len(knowledge)\n", "ratio.nlargest(10)" ] }, { "cell_type": "code", "execution_count": 182, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "author\n", "Anirudh Venkataramanan 0.035255\n", "Daniel Scheller 0.031052\n", "Yasunari Takiguchi 0.024187\n", "Aviad Krawczyk 0.023526\n", "Stanimir Varbanov 0.020556\n", "Salil 0.019973\n", "Mika Westerberg 0.016489\n", "Todor Tomov 0.015828\n", "Jakub Kicinski 0.015367\n", "Tomer Tayar 0.012627\n", "Name: line, dtype: float64" ] }, "execution_count": 182, "metadata": {}, "output_type": "execute_result" } ], "source": [ "knowledge = df[df.knowledge]\n", "ratio = knowledge.groupby('author').line.count() / len(knowledge)\n", "ratio.nlargest(10)" ] }, { "cell_type": "code", "execution_count": 205, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 205, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEACAYAAACznAEdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAHXBJREFUeJzt3X2QXXWd5/H3597bD0kn6ZCkA+TJRBLQAD4MMejCzOgwcVBHAztQxKVG3MHKOEpZtdbMbqwtmCnWqVp2rbVmVmZqo6BIrQXKytJqMGihS+kqpLMEQ4hxmhhMkygd8tR56Ofv/nFPJzc39/Y9nXTndnM+r+LWPed3vufc30lIf/p3nq4iAjMzs1y9O2BmZpODA8HMzAAHgpmZJRwIZmYGOBDMzCzhQDAzM8CBYGZmCQeCmZkBDgQzM0sU6t2BsZg3b14sXbq03t0wM5tStm7deiAi2mrVTalAWLp0KR0dHfXuhpnZlCLplTR1PmRkZmaAA8HMzBIOBDMzAxwIZmaWcCCYmRngQDAzs0SqQJB0o6RdkjolbaiwvEnSo8nyZyUtTdpXS9qWvF6QdHPJOnskbU+W+VpSM7M6q3kfgqQ8cD+wBugCtkhqj4iXSsruBA5FxHJJ64D7gNuAF4FVETEo6VLgBUnfiYjBZL33RcSB8dyhSr72018zd0YTH377gon+KDOzKSvNCGE10BkRuyOiH3gEWFtWsxZ4KJl+DLhBkiLiRMkP/2agLl/g/D+f/Q1Pvri/Hh9tZjZlpAmEhcDekvmupK1iTRIAR4C5AJKulbQD2A58siQgAnhK0lZJ6899F2rLSQwN1yWLzMymjDSPrlCFtvKfrlVrIuJZ4EpJbwUekvRkRPQC10XEPknzgR9I+mVEPHPWhxfDYj3AkiVLUnT3bLmccB6YmY0uzQihC1hcMr8I2FetRlIBaAUOlhZExE7gOHBVMr8veX8NeJzioamzRMTGiFgVEava2mo+m6minGDYiWBmNqo0gbAFWCFpmaRGYB3QXlbTDtyRTN8CPB0RkaxTAJD0JuAKYI+kFkkzk/YW4P0UT0BPiHxODIcDwcxsNDUPGSVXCN0FbAbywIMRsUPSvUBHRLQDDwAPS+qkODJYl6x+PbBB0gAwDHwqIg5IejPwuKSRPnwjIr4/3js3QhJDzgMzs1Glevx1RGwCNpW13VMy3QvcWmG9h4GHK7TvBt4+1s6eq7wgPEIwMxtVJu5U9lVGZma1ZSYQfA7BzGx02QiEHL7s1MyshmwEguTLTs3MashEIPiyUzOz2jIRCL7s1MystkwEgi87NTOrLROB4MtOzcxqy0Yg+OF2ZmY1ZSMQ/HA7M7OaMhEIvsrIzKy2TARC8SojB4KZ2WgyEQh5CeeBmdnoMhEIOeGrjMzMashGIPgcgplZTdkIBD/LyMyspowEAj6pbGZWQ0YCwSeVzcxqyUQgSMJ5YGY2ulSBIOlGSbskdUraUGF5k6RHk+XPSlqatK+WtC15vSDp5rTbHE/yw+3MzGqqGQiS8sD9wAeAlcBHJa0sK7sTOBQRy4EvAvcl7S8CqyLiHcCNwP+QVEi5zXGTEz5kZGZWQ5oRwmqgMyJ2R0Q/8AiwtqxmLfBQMv0YcIMkRcSJiBhM2pvh1JGbNNscN8KXnZqZ1ZImEBYCe0vmu5K2ijVJABwB5gJIulbSDmA78MlkeZptjpuc8DkEM7Ma0gSCKrSV/3ytWhMRz0bElcC7gM9Jak65zeKGpfWSOiR1dHd3p+huxW34PgQzsxrSBEIXsLhkfhGwr1qNpALQChwsLYiIncBx4KqU2xxZb2NErIqIVW1tbSm6ezb5HIKZWU1pAmELsELSMkmNwDqgvaymHbgjmb4FeDoiIlmnACDpTcAVwJ6U2xw3OV92amZWU6FWQUQMSroL2AzkgQcjYoeke4GOiGgHHgAeltRJcWSwLln9emCDpAFgGPhURBwAqLTNcd63UwQ+qWxmVkPNQACIiE3AprK2e0qme4FbK6z3MPBw2m1OlFzOdyqbmdWSjTuV8QjBzKyWbASCzyGYmdWUkUDwoyvMzGrJRCD40RVmZrVlIhD86Aozs9oyEQh+dIWZWW2ZCAT8BTlmZjVlIhByyZOTfGLZzKy6TASCkmfp+fl2ZmbVZSIQPEIwM6stE4GgJBA8QjAzqy4jgTByyMiJYGZWTSYCIadK38djZmalMhEIpw8ZeYRgZlZNJgLh9Enl+vbDzGwyy0QgnL7s1IlgZlZNNgJhZIRQ326YmU1qGQmEYiLEcJ07YmY2iWUiEE6dQ/AYwcysqlSBIOlGSbskdUraUGF5k6RHk+XPSlqatK+RtFXS9uT9j0rW+XGyzW3Ja/547dRZ/UvefWOamVl1hVoFkvLA/cAaoAvYIqk9Il4qKbsTOBQRyyWtA+4DbgMOAB+OiH2SrgI2AwtL1rs9IjrGaV+qyiVDBD+6wsysujQjhNVAZ0Tsjoh+4BFgbVnNWuChZPox4AZJiojnI2Jf0r4DaJbUNB4dHwuPEMzMaksTCAuBvSXzXZz5W/4ZNRExCBwB5pbV/BnwfET0lbR9NTlcdLc0cbcTnzqp7HMIZmZVpQmESj+oy3+yjloj6UqKh5H+smT57RFxNfD7yevPK364tF5Sh6SO7u7uFN2ttI2kQ84DM7Oq0gRCF7C4ZH4RsK9ajaQC0AocTOYXAY8DH4uIl0dWiIhXk/ce4BsUD02dJSI2RsSqiFjV1taWZp/OMvIsIweCmVl1aQJhC7BC0jJJjcA6oL2sph24I5m+BXg6IkLSbOB7wOci4qcjxZIKkuYl0w3AnwIvnt+uVHf6HIITwcysmpqBkJwTuIviFUI7gW9GxA5J90r6SFL2ADBXUifwWWDk0tS7gOXA3WWXlzYBmyX9AtgGvAp8eTx3rFTOj782M6up5mWnABGxCdhU1nZPyXQvcGuF9T4PfL7KZq9J383zU8gXA2FwyIFgZlZNJu5UntncAEBP72Cde2JmNnllJBCKA6Ge3oE698TMbPLKRCDMSkYIR046EMzMqslEIExrzAPQOzhU556YmU1emQiEfHKV0ZAff21mVlU2AiE/EghOBDOzajIRCIWcRwhmZrVkIhBy8gjBzKyWTATC6RGCb0wzM6smE4Ew8gU5vlHZzKy6TATC6RGCDxmZmVWTiUDI+6SymVlNGQsEJ4KZWTXZCATfmGZmVlMmAiGXE5JHCGZmo8lEIEBxlDDkL8gxM6sqO4GQE4O+D8HMrKpMBcKwA8HMrKpMBYJHCGZm1aUKBEk3StolqVPShgrLmyQ9mix/VtLSpH2NpK2Stifvf1SyzjVJe6ekf5SSS4EmSCEnf6eymdkoagaCpDxwP/ABYCXwUUkry8ruBA5FxHLgi8B9SfsB4MMRcTVwB/BwyTr/DKwHViSvG89jP2qa2dzAsT5/p7KZWTVpRgirgc6I2B0R/cAjwNqymrXAQ8n0Y8ANkhQRz0fEvqR9B9CcjCYuBWZFxM8iIoCvAzed996MonVaA4dP9E/kR5iZTWlpAmEhsLdkvitpq1gTEYPAEWBuWc2fAc9HRF9S31Vjm+Nq9vQGDp3wdyqbmVWTJhAqHdsvPxg/ao2kKykeRvrLMWxzZN31kjokdXR3d6fobmXNDXl6B/ydymZm1aQJhC5gccn8ImBftRpJBaAVOJjMLwIeBz4WES+X1C+qsU0AImJjRKyKiFVtbW0pultZXmLYN6aZmVWVJhC2ACskLZPUCKwD2stq2imeNAa4BXg6IkLSbOB7wOci4qcjxRGxH+iR9O7k6qKPAU+c576MKp+TvyDHzGwUNQMhOSdwF7AZ2Al8MyJ2SLpX0keSsgeAuZI6gc8CI5em3gUsB+6WtC15zU+W/RXwFaATeBl4crx2qpJcTjgPzMyqK6QpiohNwKaytntKpnuBWyus93ng81W22QFcNZbOno+c/BWaZmajyc6dyvIhIzOz0WQmEIqHjBwIZmbVZCYQPEIwMxtdZgLBIwQzs9FlJhDyOXyVkZnZKLITCD5kZGY2qswEQs5fkGNmNqrMBIK/U9nMbHTZCQQ/usLMbFSZCQRfZWRmNrrMBIJPKpuZjS4zgTDycLvwKMHMrKLMBEJexe/k8SDBzKyy7ARCsqc+bGRmVllmAqGQJMLA0HCde2JmNjllJhBapzUAcLR3oM49MTObnDITCLOTQDh03IFgZlZJdgJheiMAh0/017knZmaTU2YC4aKW4gjh8EmPEMzMKkkVCJJulLRLUqekDRWWN0l6NFn+rKSlSftcST+SdEzSl8rW+XGyzW3Ja/547FA1s6cVRwiHPEIwM6uoUKtAUh64H1gDdAFbJLVHxEslZXcChyJiuaR1wH3AbUAvcDdwVfIqd3tEdJznPqQye3oyQjjhEYKZWSVpRgirgc6I2B0R/cAjwNqymrXAQ8n0Y8ANkhQRxyPiJxSDoa6aCsVd7Rv0ZadmZpWkCYSFwN6S+a6krWJNRAwCR4C5Kbb91eRw0d1ScivxBJFE3t+JYGZWVZpAqPSDuvynapqacrdHxNXA7yevP6/44dJ6SR2SOrq7u2t2djT5nBh0IJiZVZQmELqAxSXzi4B91WokFYBW4OBoG42IV5P3HuAbFA9NVarbGBGrImJVW1tbiu5WV3ziqQ8ZmZlVkiYQtgArJC2T1AisA9rLatqBO5LpW4CnY5THikoqSJqXTDcAfwq8ONbOj1XBIwQzs6pqXmUUEYOS7gI2A3ngwYjYIeleoCMi2oEHgIcldVIcGawbWV/SHmAW0CjpJuD9wCvA5iQM8sAPgS+P655VkM/7HIKZWTU1AwEgIjYBm8ra7imZ7gVurbLu0iqbvSZdF8ePRwhmZtVl5k5l8Pcqm5mNJluBII8QzMyqyVYg+ByCmVlVmQqEQi7nEYKZWRWZCgSfQzAzqy5bgSAx6BvTzMwqylYgeIRgZlZVpgKhkHcgmJlVk61AyIn+IR8yMjOrJFOB0NyQp2/AgWBmVknmAqF3cKje3TAzm5QyFQhNhZxHCGZmVWQqEDxCMDOrLmOBkKPXIwQzs4oyFQhNhTy9/R4hmJlVkqlAWDC7mZ6+QQ4d7693V8zMJp1MBcIVl8wC4Je/7alzT8zMJp9MBcKK+TMA2H3gWJ17YmY2+WQqEC6a3gjAkZMDde6JmdnkkyoQJN0oaZekTkkbKixvkvRosvxZSUuT9rmSfiTpmKQvla1zjaTtyTr/KEnjsUOjaW7I0ZAXPb2DE/1RZmZTTs1AkJQH7gc+AKwEPippZVnZncChiFgOfBG4L2nvBe4G/rrCpv8ZWA+sSF43nssOjIUkZjY30NPrEYKZWbk0I4TVQGdE7I6IfuARYG1ZzVrgoWT6MeAGSYqI4xHxE4rBcIqkS4FZEfGziAjg68BN57MjaV08q5mXXzt+IT7KzGxKSRMIC4G9JfNdSVvFmogYBI4Ac2tss6vGNifEH17expY9BznqUYKZ2RnSBEKlY/vlXyqQpuac6iWtl9QhqaO7u3uUTaazZuV8BoeDJ55/9by3ZWb2RpImELqAxSXzi4B91WokFYBW4GCNbS6qsU0AImJjRKyKiFVtbW0puju631tyESvmz+AHO187722Zmb2RpAmELcAKScskNQLrgPaymnbgjmT6FuDp5NxARRGxH+iR9O7k6qKPAU+MuffnQBLL5rXwuyO9tYvNzDKkUKsgIgYl3QVsBvLAgxGxQ9K9QEdEtAMPAA9L6qQ4Mlg3sr6kPcAsoFHSTcD7I+Il4K+ArwHTgCeT1wUxe3oDv+jyOQQzs1I1AwEgIjYBm8ra7imZ7gVurbLu0irtHcBVaTs6nmZPb+TwST/PyMysVKbuVB7ROq2B3oFhegf85FMzsxGZDQTwIyzMzEplMhBmTy8GwqETPmxkZjYik4Gw+KLpAGzZc6jOPTEzmzwyGQhXL2wFoLunr849MTObPDIZCLmcmNFU4JifempmdkomAwEoBkKfTyqbmY3IbCBMb8rzxLaKT8swM8ukzAbCJbOayU38d/KYmU0ZmQ2E1cvmcHJgiKHh0R7KamaWHZkNhJnNxXsRfGLZzKwos4Ewq7n4GKe9h07UuSdmZpNDZgPhXUvnAPD8b3xzmpkZZDgQFs+ZTj4nXj3s70UwM4MMB0I+J95yyUy++4t9PrFsZkaGAwHgU+9dTtehk3z1p7+ud1fMzOou04Hw/isvprGQ4zsv+AY1M7NMB0JDPsct1yzipf1HfdjIzDIv04EAcO2yOQwMBf/tB7vq3RUzs7pKFQiSbpS0S1KnpA0VljdJejRZ/qykpSXLPpe075L0JyXteyRtl7RNUsd47My5+PDbFrCgtZlf/e5YvbpgZjYpFGoVSMoD9wNrgC5gi6T2iHippOxO4FBELJe0DrgPuE3SSmAdcCWwAPihpMsjYuTLjN8XEQfGcX/GLJcTi+dM99dpmlnmpRkhrAY6I2J3RPQDjwBry2rWAg8l048BN0hS0v5IRPRFxK+BzmR7k8qsaQ0cdSCYWcalCYSFwN6S+a6krWJNRAwCR4C5NdYN4ClJWyWtH3vXx8+lrc283H2Mb/+/rnp2w8ysrmoeMgIqPSO6/JKcajWjrXtdROyTNB/4gaRfRsQzZ314MSzWAyxZsiRFd8fu3/3x5fxyfw9//a0XmD+zmetXzJuQzzEzm8zSjBC6gMUl84uA8gv3T9VIKgCtwMHR1o2IkffXgMepcigpIjZGxKqIWNXW1paiu2N3UUsjD/7bd9FUyPPt5z1KMLNsShMIW4AVkpZJaqR4kri9rKYduCOZvgV4OiIiaV+XXIW0DFgBPCepRdJMAEktwPuBF89/d87djKYCf3D5PLa+4ofdmVk21QyE5JzAXcBmYCfwzYjYIeleSR9Jyh4A5krqBD4LbEjW3QF8E3gJ+D7w6eQKo4uBn0h6AXgO+F5EfH98d23srnnTRbzy+gn+rn0HvQNDtVcwM3sDUfEX+alh1apV0dExcbcsvHa0l49/dQsv7T/K5RfP4D9+aCV/ePnEHKYyM7tQJG2NiFW16jJ/p3Kp+bOa+d5nruefbv89unv6uOPB5/jCZt/BbGbZ4EAoI4kPXn0pz/z797Fm5cV86UedHO31PQpm9sbnQKhiZnMDn7h+GQB/+8SOOvfGzGziORBGce2b5/Lhty/g8edf5RMPdfDq4ZP17pKZ2YRxINTw9zdfxWduWMHPXj7AJx7qYGBouN5dMjObEA6EGmY1N/DZNZfzX255Ozv3H2XjM7vr3SUzswnhQEjpQ2+7lGXzWvjCU7v48jO7faLZzN5wHAhj8A/r3sEVF8/k7zft5KMbf853XtjHgWN99e6Wmdm48I1p5+D7L+5nw7e3c/jEALOaC3zyvZfxF9cto7khX++umZmdJe2NaQ6EczQwNMwLew/zhad28fPdB5nRVGDtOxbwN39yBbOnN9a7e2ZmpzgQLpCI4P/8qptvdXTxve37KeTEze9cyH/4wFuYN6Op3t0zM3Mg1MP2riN85Se7eWLbPnKCD71tAf/6nQu5rG0Giy6aRi5X6eshzMwmlgOhjp7/zSG+88J+vvHcK/QOFO9baGnMc+WCVv7NtUu4bvk82mZ69GBmF4YDYRI4cmKAX73WQ+drx3hh72GefPG3HDk5QD4n/mDFPNasvIQPXn2JzzmY2YRyIExC/YPD7PptD0++uJ/HtnbxWk/xktU5LY3Mn9nEVQtb+dDVl/LeK9qQfHjJzMaHA2GSGx4Ofrb7dbbtPcyrh0+y9+AJtv3mMD19g7xr6UW857J5vHPxbBZdNI3L2mb4/IOZnbO0gVC4EJ2xs+Vy4rrl87hu+bxTbb0DQzz401/Tvm0fX3r6XxhOsnpBazPvfNNFvPWSmVy5oJVl81pom9lES5P/+sxs/HiEMEkd6xtk5/6jbNlzkGd+1c2+w7385uCJM2reNHc6b71kFisXzGL5/BnMn9nEvBlNzGwuMGtaAw1534huZj5k9IZ0tHeAnfuO0nXoJPsOn2Tnb4+yc38Pe14/TvlfY2M+x1svncnKBa1c1tbCnJZG5rQ0MreliTkzGpkzvZFpjb6z2iwLxvWQkaQbgX8A8sBXIuI/ly1vAr4OXAO8DtwWEXuSZZ8D7gSGgM9ExOY027SzzWpu4No3z+Xasvae3gH2HjzJaz29vH6sn2N9g7x6+CQvvnqETdv3c+Rk5QfxTWvIF0NiRmNJYDQyp6WJJXOmc0lrM/NnNnFRSyMtjXmf6DZ7g6sZCJLywP3AGqAL2CKpPSJeKim7EzgUEcslrQPuA26TtBJYB1wJLAB+KOnyZJ1a27SUZjY3sHJBAyuZddayiOBo7yAHj/dz8Hgfrx/r5+Dxfl4/3p+0FacPHOvjX353jNeP9526d6JUISdmT2+gdVrx1dJUYFpDnumNeaY15pnWUGBaY47pjQWak/bpjflT09MainXTGwunpqc15Gks+LCW2WSRZoSwGuiMiN0Akh4B1gKlP7zXAn+XTD8GfEnFXyfXAo9ERB/wa0mdyfZIsU0bB5JO/RBfNq8l1TrH+wbZ8/pxXuvpo7unj8Mn+jl8YoDDJwc4cmKAwyeLo5Dunj5ODgxxon+I3v4hTgwMMTQ8tkOQhZxOBURzQ55CXjTmcxTyopDL0ZAXjYUcDfniq7GQozFfbC9tK+REIV98z4+8JHI5kRfkcyPTxfecRCFpKyTzuZG6UzUk7aeXSWe2a2Q6x6k6laxzRs0Zy08vEwKRTBeXF9+Ly0YGZqXzZ9V59GbjIE0gLAT2lsx3wVlHLU7VRMSgpCPA3KT952XrLkyma23T6qSlqcCVC1q5cozrRQT9Q8P09g9zYmCQk/3FsDg5MHRqujcJkBP9g6emR5b3DgwxMBwMDA4zOBwMDA0zMDRM38AwPb2D9A8W5/uHhhkYDAaHh5O2Yu3gGMPojahaqCT/lYRQ6Tqn586IFVWcPLM+TU1Z/yqtUX07pe1j+9wzPklnT491e+VdL/1zvhC++5nraSpM7Hm/NIFQaX/L/+VVq6nWXuk4QcV/zZLWA+sBlixZUr2XVneSaCrkaSrkaaXhgn9+RDAcxSfRDkcwNBwMD8PQyHTJ+/AwDA6P1BWnIyipKW5vZHo4kvWieA/JcAQRxW1HnP7skbo4NU0yX7J8OAhGtlP8H3/k4o4ICJJtls2P7GOlZZGsXKl9ZD75j+GS4Iwz/vxKpkuWVLvupPSClLFup1o91erPY5un6qvWptmPM+sjaQyq/OFMgAsRPWkCoQtYXDK/CNhXpaZLUgFoBQ7WWLfWNgGIiI3ARiheZZSiv5ZR0sjhIV89ZXYu0pzR2wKskLRMUiPFk8TtZTXtwB3J9C3A01GM3XZgnaQmScuAFcBzKbdpZmYXUM0RQnJO4C5gM8VLRB+MiB2S7gU6IqIdeAB4ODlpfJDiD3iSum9SPFk8CHw6IoYAKm1z/HfPzMzS8o1pZmZvcGlvTPNF4GZmBjgQzMws4UAwMzPAgWBmZgkHgpmZAVPsKiNJ3cAr57j6PODAOHbnQpmK/Z6KfYap2e+p2Gdwvy+keUBLRLTVKpxSgXA+JHWkuexqspmK/Z6KfYap2e+p2Gdwvy+ksfTZh4zMzAxwIJiZWSJLgbCx3h04R1Ox31OxzzA1+z0V+wzu94WUus+ZOYdgZmajy9IIwczMRuFAMDMzwIFgZmYJB4KZmQEOBDMzSzgQzM6BpJskrSyZ/7GkKXUHq1k5B4LZubkJWFmzKgVJNb/K1uxCcCCYJST9b0lbJe2QtD5pO1ay/BZJX5P0r4CPAP9V0jZJlyUlt0p6TtKvJP1+sk6zpK9K2i7peUnvS9o/Lulbkr4DPHVh99SsMv9mYnbaX0TEQUnTgC2S/lelooj4v5Lage9GxGMAkgAKEbFa0geBvwX+GPh0ss7Vkt4CPCXp8mRT7wHeFhEHJ3a3zNJxIJid9hlJNyfTi4EVY1z/28n7VmBpMn098N8BIuKXkl4BRgLhBw4Dm0wcCGaApPdS/I3+PRFxQtKPgWag9NkuzTU205e8D3H635ZGqT8+9p6aTRyfQzAragUOJWHwFuDdSfvvJL1VUg64uaS+B5iZYrvPALcDJIeKlgC7xq/bZuPHgWBW9H2gIOkXwH8Cfp60bwC+CzwN7C+pfwT4m+RE8WVU909AXtJ24FHg4xHRN0q9Wd34aadmZgZ4hGBmZgkHgpmZAQ4EMzNLOBDMzAxwIJiZWcKBYGZmgAPBzMwSDgQzMwPg/wPLqry4YWNHLQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ratio.sort_values(ascending=False).plot()" ] }, { "cell_type": "code", "execution_count": 211, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 1336.000000\n", "mean 0.000749\n", "std 0.002354\n", "min 0.000002\n", "25% 0.000011\n", "50% 0.000063\n", "75% 0.000457\n", "max 0.035255\n", "Name: line, dtype: float64" ] }, "execution_count": 211, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ratio.describe()" ] }, { "cell_type": "code", "execution_count": 225, "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pathauthortimestamplineknowledgecomponent
0drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 08:54:451Falsedrivers/scsi/bfa
1drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 08:54:452Falsedrivers/scsi/bfa
2drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 08:54:453Falsedrivers/scsi/bfa
3drivers/scsi/bfa/bfad_drv.hJing Huang2009-09-24 00:46:154Falsedrivers/scsi/bfa
4drivers/scsi/bfa/bfad_drv.hAnil Gurumurthy2015-11-26 08:54:455Falsedrivers/scsi/bfa
\n", "
" ], "text/plain": [ " path author timestamp line \\\n", "0 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 2015-11-26 08:54:45 1 \n", "1 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 2015-11-26 08:54:45 2 \n", "2 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 2015-11-26 08:54:45 3 \n", "3 drivers/scsi/bfa/bfad_drv.h Jing Huang 2009-09-24 00:46:15 4 \n", "4 drivers/scsi/bfa/bfad_drv.h Anil Gurumurthy 2015-11-26 08:54:45 5 \n", "\n", " knowledge component \n", "0 False drivers/scsi/bfa \n", "1 False drivers/scsi/bfa \n", "2 False drivers/scsi/bfa \n", "3 False drivers/scsi/bfa \n", "4 False drivers/scsi/bfa " ] }, "execution_count": 225, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['component'] = df.path.str.rsplit(\"/\", n=1).str[0]\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 267, "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "'component'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mknowledge_ratio\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgroupby\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'component'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'knowledge'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mknowledge_ratio\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mknowledge\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\dev\\apps\\Anaconda3\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36mgroupby\u001b[1;34m(self, by, axis, level, as_index, sort, group_keys, squeeze, **kwargs)\u001b[0m\n\u001b[0;32m 5160\u001b[0m return groupby(self, by=by, axis=axis, level=level, as_index=as_index,\n\u001b[0;32m 5161\u001b[0m \u001b[0msort\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msort\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgroup_keys\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mgroup_keys\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msqueeze\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msqueeze\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 5162\u001b[1;33m **kwargs)\n\u001b[0m\u001b[0;32m 5163\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5164\u001b[0m def asfreq(self, freq, method=None, how=None, normalize=False,\n", "\u001b[1;32mC:\\dev\\apps\\Anaconda3\\lib\\site-packages\\pandas\\core\\groupby.py\u001b[0m in \u001b[0;36mgroupby\u001b[1;34m(obj, by, **kwds)\u001b[0m\n\u001b[0;32m 1846\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'invalid type: %s'\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1847\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1848\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mklass\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mby\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1849\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1850\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\dev\\apps\\Anaconda3\\lib\\site-packages\\pandas\\core\\groupby.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, obj, keys, axis, level, grouper, exclusions, selection, as_index, sort, group_keys, squeeze, **kwargs)\u001b[0m\n\u001b[0;32m 514\u001b[0m \u001b[0mlevel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mlevel\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 515\u001b[0m \u001b[0msort\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msort\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 516\u001b[1;33m mutated=self.mutated)\n\u001b[0m\u001b[0;32m 517\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 518\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mobj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\dev\\apps\\Anaconda3\\lib\\site-packages\\pandas\\core\\groupby.py\u001b[0m in \u001b[0;36m_get_grouper\u001b[1;34m(obj, key, axis, level, sort, mutated, validate)\u001b[0m\n\u001b[0;32m 2932\u001b[0m \u001b[0min_axis\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlevel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgpr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgpr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2933\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2934\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgpr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2935\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgpr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mGrouper\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mgpr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkey\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2936\u001b[0m \u001b[1;31m# Add key to exclusions\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mKeyError\u001b[0m: 'component'" ] } ], "source": [ "knowledge_ratio = df.groupby('component')[['knowledge']].mean()\n", "knowledge_ratio.knowledge" ] }, { "cell_type": "code", "execution_count": 246, "metadata": {}, "outputs": [ { "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", " \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", " \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", " \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", " \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", " \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", " \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", " \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", " \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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pathauthortimestamplineknowledgecomponent
1728295drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:3717Truedrivers/media/common/videobuf
1728296drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:3718Truedrivers/media/common/videobuf
1728318drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:3740Truedrivers/media/common/videobuf
1728615drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 14:16:47337Truedrivers/media/common/videobuf
1728616drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 14:16:47338Truedrivers/media/common/videobuf
1728617drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 14:16:47339Truedrivers/media/common/videobuf
1728618drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 14:16:47340Truedrivers/media/common/videobuf
1728747drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:37469Truedrivers/media/common/videobuf
1728749drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:37471Truedrivers/media/common/videobuf
1728752drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:37474Truedrivers/media/common/videobuf
1728773drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:37495Truedrivers/media/common/videobuf
1728775drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:37497Truedrivers/media/common/videobuf
1728778drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:37500Truedrivers/media/common/videobuf
1728780drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:37502Truedrivers/media/common/videobuf
1728784drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:37506Truedrivers/media/common/videobuf
1728786drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:37508Truedrivers/media/common/videobuf
1728789drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:37511Truedrivers/media/common/videobuf
1728807drivers/media/common/videobuf/videobuf2-core.cSatendra Singh Thakur2017-12-28 16:29:35529Truedrivers/media/common/videobuf
1728949drivers/media/common/videobuf/videobuf2-core.cSatendra Singh Thakur2017-12-28 16:29:35671Truedrivers/media/common/videobuf
1728950drivers/media/common/videobuf/videobuf2-core.cSatendra Singh Thakur2017-12-28 16:29:35672Truedrivers/media/common/videobuf
1728984drivers/media/common/videobuf/videobuf2-core.cSakari Ailus2017-12-28 14:18:20706Truedrivers/media/common/videobuf
1728985drivers/media/common/videobuf/videobuf2-core.cSakari Ailus2017-12-28 14:18:20707Truedrivers/media/common/videobuf
1728986drivers/media/common/videobuf/videobuf2-core.cSakari Ailus2017-12-28 14:18:20708Truedrivers/media/common/videobuf
1729939drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:381661Truedrivers/media/common/videobuf
1729940drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:381662Truedrivers/media/common/videobuf
1729941drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:381663Truedrivers/media/common/videobuf
1729943drivers/media/common/videobuf/videobuf2-core.cMauro Carvalho Chehab2017-12-28 16:29:381665Truedrivers/media/common/videobuf
1730295drivers/media/common/videobuf/videobuf2-core.cSatendra Singh Thakur2017-12-28 16:29:352017Truedrivers/media/common/videobuf
1730296drivers/media/common/videobuf/videobuf2-core.cSatendra Singh Thakur2017-12-28 16:29:352018Truedrivers/media/common/videobuf
1730825drivers/media/common/videobuf/videobuf2-core.cFengguang Wu2017-12-28 17:26:202547Truedrivers/media/common/videobuf
1729977drivers/media/common/videobuf2/videobuf2-core.cSakari Ailus2018-02-02 10:08:591699Truedrivers/media/common/videobuf2
1729978drivers/media/common/videobuf2/videobuf2-core.cSakari Ailus2018-02-02 10:08:591700Truedrivers/media/common/videobuf2
1729979drivers/media/common/videobuf2/videobuf2-core.cSakari Ailus2018-02-02 10:08:591701Truedrivers/media/common/videobuf2
1729980drivers/media/common/videobuf2/videobuf2-core.cSakari Ailus2018-02-02 10:08:591702Truedrivers/media/common/videobuf2
1729981drivers/media/common/videobuf2/videobuf2-core.cSakari Ailus2018-02-02 10:08:591703Truedrivers/media/common/videobuf2
1729982drivers/media/common/videobuf2/videobuf2-core.cSakari Ailus2018-02-02 10:08:591704Truedrivers/media/common/videobuf2
1729983drivers/media/common/videobuf2/videobuf2-core.cSakari Ailus2018-02-02 10:08:591705Truedrivers/media/common/videobuf2
1729984drivers/media/common/videobuf2/videobuf2-core.cSakari Ailus2018-02-02 10:08:591706Truedrivers/media/common/videobuf2
1729985drivers/media/common/videobuf2/videobuf2-core.cSakari Ailus2018-02-02 10:08:591707Truedrivers/media/common/videobuf2
1730328drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032050Truedrivers/media/common/videobuf2
1730330drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032052Truedrivers/media/common/videobuf2
1730338drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032060Truedrivers/media/common/videobuf2
1730340drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032062Truedrivers/media/common/videobuf2
1730343drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032065Truedrivers/media/common/videobuf2
1730345drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032067Truedrivers/media/common/videobuf2
1730349drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032071Truedrivers/media/common/videobuf2
1730358drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032080Truedrivers/media/common/videobuf2
1730362drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032084Truedrivers/media/common/videobuf2
1730367drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032089Truedrivers/media/common/videobuf2
1730368drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032090Truedrivers/media/common/videobuf2
1730375drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032097Truedrivers/media/common/videobuf2
1730383drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032105Truedrivers/media/common/videobuf2
1730400drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032122Truedrivers/media/common/videobuf2
1730401drivers/media/common/videobuf2/videobuf2-core.cLinus Torvalds2018-02-11 22:34:032123Truedrivers/media/common/videobuf2
1726814drivers/media/common/videobuf2/videobuf2-v4l2.cLinus Torvalds2018-02-11 22:34:03661Truedrivers/media/common/videobuf2
1726839drivers/media/common/videobuf2/videobuf2-v4l2.cLinus Torvalds2018-02-11 22:34:03686Truedrivers/media/common/videobuf2
1726840drivers/media/common/videobuf2/videobuf2-v4l2.cLinus Torvalds2018-02-11 22:34:03687Truedrivers/media/common/videobuf2
1727077drivers/media/common/videobuf2/videobuf2-v4l2.cLinus Torvalds2018-02-11 22:34:03924Truedrivers/media/common/videobuf2
1731803drivers/media/common/videobuf2/videobuf2-vmall...Masami Hiramatsu2018-02-06 08:02:23109Truedrivers/media/common/videobuf2
\n", "
" ], "text/plain": [ " path \\\n", "1728295 drivers/media/common/videobuf/videobuf2-core.c \n", "1728296 drivers/media/common/videobuf/videobuf2-core.c \n", "1728318 drivers/media/common/videobuf/videobuf2-core.c \n", "1728615 drivers/media/common/videobuf/videobuf2-core.c \n", "1728616 drivers/media/common/videobuf/videobuf2-core.c \n", "1728617 drivers/media/common/videobuf/videobuf2-core.c \n", "1728618 drivers/media/common/videobuf/videobuf2-core.c \n", "1728747 drivers/media/common/videobuf/videobuf2-core.c \n", "1728749 drivers/media/common/videobuf/videobuf2-core.c \n", "1728752 drivers/media/common/videobuf/videobuf2-core.c \n", "1728773 drivers/media/common/videobuf/videobuf2-core.c \n", "1728775 drivers/media/common/videobuf/videobuf2-core.c \n", "1728778 drivers/media/common/videobuf/videobuf2-core.c \n", "1728780 drivers/media/common/videobuf/videobuf2-core.c \n", "1728784 drivers/media/common/videobuf/videobuf2-core.c \n", "1728786 drivers/media/common/videobuf/videobuf2-core.c \n", "1728789 drivers/media/common/videobuf/videobuf2-core.c \n", "1728807 drivers/media/common/videobuf/videobuf2-core.c \n", "1728949 drivers/media/common/videobuf/videobuf2-core.c \n", "1728950 drivers/media/common/videobuf/videobuf2-core.c \n", "1728984 drivers/media/common/videobuf/videobuf2-core.c \n", "1728985 drivers/media/common/videobuf/videobuf2-core.c \n", "1728986 drivers/media/common/videobuf/videobuf2-core.c \n", "1729939 drivers/media/common/videobuf/videobuf2-core.c \n", "1729940 drivers/media/common/videobuf/videobuf2-core.c \n", "1729941 drivers/media/common/videobuf/videobuf2-core.c \n", "1729943 drivers/media/common/videobuf/videobuf2-core.c \n", "1730295 drivers/media/common/videobuf/videobuf2-core.c \n", "1730296 drivers/media/common/videobuf/videobuf2-core.c \n", "1730825 drivers/media/common/videobuf/videobuf2-core.c \n", "1729977 drivers/media/common/videobuf2/videobuf2-core.c \n", "1729978 drivers/media/common/videobuf2/videobuf2-core.c \n", "1729979 drivers/media/common/videobuf2/videobuf2-core.c \n", "1729980 drivers/media/common/videobuf2/videobuf2-core.c \n", "1729981 drivers/media/common/videobuf2/videobuf2-core.c \n", "1729982 drivers/media/common/videobuf2/videobuf2-core.c \n", "1729983 drivers/media/common/videobuf2/videobuf2-core.c \n", "1729984 drivers/media/common/videobuf2/videobuf2-core.c \n", "1729985 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730328 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730330 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730338 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730340 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730343 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730345 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730349 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730358 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730362 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730367 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730368 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730375 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730383 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730400 drivers/media/common/videobuf2/videobuf2-core.c \n", "1730401 drivers/media/common/videobuf2/videobuf2-core.c \n", "1726814 drivers/media/common/videobuf2/videobuf2-v4l2.c \n", "1726839 drivers/media/common/videobuf2/videobuf2-v4l2.c \n", "1726840 drivers/media/common/videobuf2/videobuf2-v4l2.c \n", "1727077 drivers/media/common/videobuf2/videobuf2-v4l2.c \n", "1731803 drivers/media/common/videobuf2/videobuf2-vmall... \n", "\n", " author timestamp line knowledge \\\n", "1728295 Mauro Carvalho Chehab 2017-12-28 16:29:37 17 True \n", "1728296 Mauro Carvalho Chehab 2017-12-28 16:29:37 18 True \n", "1728318 Mauro Carvalho Chehab 2017-12-28 16:29:37 40 True \n", "1728615 Mauro Carvalho Chehab 2017-12-28 14:16:47 337 True \n", "1728616 Mauro Carvalho Chehab 2017-12-28 14:16:47 338 True \n", "1728617 Mauro Carvalho Chehab 2017-12-28 14:16:47 339 True \n", "1728618 Mauro Carvalho Chehab 2017-12-28 14:16:47 340 True \n", "1728747 Mauro Carvalho Chehab 2017-12-28 16:29:37 469 True \n", "1728749 Mauro Carvalho Chehab 2017-12-28 16:29:37 471 True \n", "1728752 Mauro Carvalho Chehab 2017-12-28 16:29:37 474 True \n", "1728773 Mauro Carvalho Chehab 2017-12-28 16:29:37 495 True \n", "1728775 Mauro Carvalho Chehab 2017-12-28 16:29:37 497 True \n", "1728778 Mauro Carvalho Chehab 2017-12-28 16:29:37 500 True \n", "1728780 Mauro Carvalho Chehab 2017-12-28 16:29:37 502 True \n", "1728784 Mauro Carvalho Chehab 2017-12-28 16:29:37 506 True \n", "1728786 Mauro Carvalho Chehab 2017-12-28 16:29:37 508 True \n", "1728789 Mauro Carvalho Chehab 2017-12-28 16:29:37 511 True \n", "1728807 Satendra Singh Thakur 2017-12-28 16:29:35 529 True \n", "1728949 Satendra Singh Thakur 2017-12-28 16:29:35 671 True \n", "1728950 Satendra Singh Thakur 2017-12-28 16:29:35 672 True \n", "1728984 Sakari Ailus 2017-12-28 14:18:20 706 True \n", "1728985 Sakari Ailus 2017-12-28 14:18:20 707 True \n", "1728986 Sakari Ailus 2017-12-28 14:18:20 708 True \n", "1729939 Mauro Carvalho Chehab 2017-12-28 16:29:38 1661 True \n", "1729940 Mauro Carvalho Chehab 2017-12-28 16:29:38 1662 True \n", "1729941 Mauro Carvalho Chehab 2017-12-28 16:29:38 1663 True \n", "1729943 Mauro Carvalho Chehab 2017-12-28 16:29:38 1665 True \n", "1730295 Satendra Singh Thakur 2017-12-28 16:29:35 2017 True \n", "1730296 Satendra Singh Thakur 2017-12-28 16:29:35 2018 True \n", "1730825 Fengguang Wu 2017-12-28 17:26:20 2547 True \n", "1729977 Sakari Ailus 2018-02-02 10:08:59 1699 True \n", "1729978 Sakari Ailus 2018-02-02 10:08:59 1700 True \n", "1729979 Sakari Ailus 2018-02-02 10:08:59 1701 True \n", "1729980 Sakari Ailus 2018-02-02 10:08:59 1702 True \n", "1729981 Sakari Ailus 2018-02-02 10:08:59 1703 True \n", "1729982 Sakari Ailus 2018-02-02 10:08:59 1704 True \n", "1729983 Sakari Ailus 2018-02-02 10:08:59 1705 True \n", "1729984 Sakari Ailus 2018-02-02 10:08:59 1706 True \n", "1729985 Sakari Ailus 2018-02-02 10:08:59 1707 True \n", "1730328 Linus Torvalds 2018-02-11 22:34:03 2050 True \n", "1730330 Linus Torvalds 2018-02-11 22:34:03 2052 True \n", "1730338 Linus Torvalds 2018-02-11 22:34:03 2060 True \n", "1730340 Linus Torvalds 2018-02-11 22:34:03 2062 True \n", "1730343 Linus Torvalds 2018-02-11 22:34:03 2065 True \n", "1730345 Linus Torvalds 2018-02-11 22:34:03 2067 True \n", "1730349 Linus Torvalds 2018-02-11 22:34:03 2071 True \n", "1730358 Linus Torvalds 2018-02-11 22:34:03 2080 True \n", "1730362 Linus Torvalds 2018-02-11 22:34:03 2084 True \n", "1730367 Linus Torvalds 2018-02-11 22:34:03 2089 True \n", "1730368 Linus Torvalds 2018-02-11 22:34:03 2090 True \n", "1730375 Linus Torvalds 2018-02-11 22:34:03 2097 True \n", "1730383 Linus Torvalds 2018-02-11 22:34:03 2105 True \n", "1730400 Linus Torvalds 2018-02-11 22:34:03 2122 True \n", "1730401 Linus Torvalds 2018-02-11 22:34:03 2123 True \n", "1726814 Linus Torvalds 2018-02-11 22:34:03 661 True \n", "1726839 Linus Torvalds 2018-02-11 22:34:03 686 True \n", "1726840 Linus Torvalds 2018-02-11 22:34:03 687 True \n", "1727077 Linus Torvalds 2018-02-11 22:34:03 924 True \n", "1731803 Masami Hiramatsu 2018-02-06 08:02:23 109 True \n", "\n", " component \n", "1728295 drivers/media/common/videobuf \n", "1728296 drivers/media/common/videobuf \n", "1728318 drivers/media/common/videobuf \n", "1728615 drivers/media/common/videobuf \n", "1728616 drivers/media/common/videobuf \n", "1728617 drivers/media/common/videobuf \n", "1728618 drivers/media/common/videobuf \n", "1728747 drivers/media/common/videobuf \n", "1728749 drivers/media/common/videobuf \n", "1728752 drivers/media/common/videobuf \n", "1728773 drivers/media/common/videobuf \n", "1728775 drivers/media/common/videobuf \n", "1728778 drivers/media/common/videobuf \n", "1728780 drivers/media/common/videobuf \n", "1728784 drivers/media/common/videobuf \n", "1728786 drivers/media/common/videobuf \n", "1728789 drivers/media/common/videobuf \n", "1728807 drivers/media/common/videobuf \n", "1728949 drivers/media/common/videobuf \n", "1728950 drivers/media/common/videobuf \n", "1728984 drivers/media/common/videobuf \n", "1728985 drivers/media/common/videobuf \n", "1728986 drivers/media/common/videobuf \n", "1729939 drivers/media/common/videobuf \n", "1729940 drivers/media/common/videobuf \n", "1729941 drivers/media/common/videobuf \n", "1729943 drivers/media/common/videobuf \n", "1730295 drivers/media/common/videobuf \n", "1730296 drivers/media/common/videobuf \n", "1730825 drivers/media/common/videobuf \n", "1729977 drivers/media/common/videobuf2 \n", "1729978 drivers/media/common/videobuf2 \n", "1729979 drivers/media/common/videobuf2 \n", "1729980 drivers/media/common/videobuf2 \n", "1729981 drivers/media/common/videobuf2 \n", "1729982 drivers/media/common/videobuf2 \n", "1729983 drivers/media/common/videobuf2 \n", "1729984 drivers/media/common/videobuf2 \n", "1729985 drivers/media/common/videobuf2 \n", "1730328 drivers/media/common/videobuf2 \n", "1730330 drivers/media/common/videobuf2 \n", "1730338 drivers/media/common/videobuf2 \n", "1730340 drivers/media/common/videobuf2 \n", "1730343 drivers/media/common/videobuf2 \n", "1730345 drivers/media/common/videobuf2 \n", "1730349 drivers/media/common/videobuf2 \n", "1730358 drivers/media/common/videobuf2 \n", "1730362 drivers/media/common/videobuf2 \n", "1730367 drivers/media/common/videobuf2 \n", "1730368 drivers/media/common/videobuf2 \n", "1730375 drivers/media/common/videobuf2 \n", "1730383 drivers/media/common/videobuf2 \n", "1730400 drivers/media/common/videobuf2 \n", "1730401 drivers/media/common/videobuf2 \n", "1726814 drivers/media/common/videobuf2 \n", "1726839 drivers/media/common/videobuf2 \n", "1726840 drivers/media/common/videobuf2 \n", "1727077 drivers/media/common/videobuf2 \n", "1731803 drivers/media/common/videobuf2 " ] }, "execution_count": 246, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df.path.str.startswith(\"drivers/media/common/videobuf\")].sort_values(['path', 'line'])" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }