In [7]:
import pandas as pd

git_log = pd.read_csv(
    "../../../spring-petclinic/git_knowledge.log",
    names=['additions', 'deletions', 'filename', 'author'],
    sep='\t')
git_log['author'] = git_log['author'].ffill()
git_log = git_log.dropna()
git_log.head()


Out[7]:
additions deletions filename author
1 2 3 pom.xml Dave Syer
3 1 1 readme.md Antoine Rey
5 1 0 pom.xml Antoine Rey
7 1 1 pom.xml Stephane Nicoll
8 11 9 src/main/java/org/springframework/samples/petc... Stephane Nicoll

In [30]:
git_log[git_log['filename'] == ".classpath"]


Out[30]:
additions deletions filename author
4185 0 32 .classpath Michael Isvy
4501 0 5 .classpath Michael Isvy
4669 28 6 .classpath Michael Isvy
4776 2 2 .classpath Rossen Stoyanchev
4859 8 36 .classpath Keith Donald
5094 43 0 .classpath Costin Leau

In [40]:
git_log[git_log['filename'] == ".bowerrc"]


Out[40]:
additions deletions filename author
362 0 3 .bowerrc Dapeng
1888 1 1 .bowerrc Antoine Rey
2971 3 0 .bowerrc Faycal Ihabritane

In [53]:
pd.DataFrame.var?

In [90]:
git_log['aid'] = pd.factorize(git_log.author)[0]
gs = git_log.groupby('filename')['author']
# pd.DataFrame(gs.ndim() / gs.count())
gs.


Out[90]:
filename
.bowerrc                                                                                                 3
.classpath                                                                                               6
.editorconfig                                                                                            2
.gitignore                                                                                               8
.mvn/wrapper/maven-wrapper.jar                                                                           1
.mvn/wrapper/maven-wrapper.properties                                                                    1
.project                                                                                                 5
.settings/.jsdtscope                                                                                     3
.settings/com.springsource.server.ide.jdt.core.xml                                                       2
.settings/org.eclipse.jdt.core.prefs                                                                     3
.settings/org.eclipse.jst.common.project.facet.core.prefs                                                2
.settings/org.eclipse.m2e.core.prefs                                                                     2
.settings/org.eclipse.m2e.wtp.prefs                                                                      2
.settings/org.eclipse.wst.common.component                                                               5
.settings/org.eclipse.wst.common.project.facet.core.xml                                                  3
.settings/org.eclipse.wst.jsdt.ui.superType.container                                                    2
.settings/org.eclipse.wst.jsdt.ui.superType.name                                                         2
.settings/org.eclipse.wst.validation.prefs                                                               2
.settings/org.maven.ide.eclipse.prefs                                                                    2
.settings/org.springframework.ide.eclipse.beans.core.prefs                                               2
.settings/org.springframework.ide.eclipse.core.prefs                                                     3
.springBeans                                                                                            14
.travis.yml                                                                                              2
README.md                                                                                                2
authors.txt                                                                                              2
bower.json                                                                                               3
db/build.xml                                                                                             2
db/dropTables.txt                                                                                        2
db/emptyDB.txt                                                                                           2
db/mysql/createDB.txt                                                                                    2
                                                                                                        ..
src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java                          1
src/test/java/org/springframework/samples/petclinic/vet/VetTests.java                                    1
src/test/java/org/springframework/samples/petclinic/web/CrashControllerTests.java                        6
src/test/java/org/springframework/samples/petclinic/web/OwnerControllerTests.java                        9
src/test/java/org/springframework/samples/petclinic/web/PetControllerTests.java                          9
src/test/java/org/springframework/samples/petclinic/web/PetTypeFormatterTests.java                       2
src/test/java/org/springframework/samples/petclinic/web/VetControllerTest.java                           2
src/test/java/org/springframework/samples/petclinic/web/VetControllerTests.java                         15
src/test/java/org/springframework/samples/petclinic/web/VisitControllerTests.java                       10
src/test/java/org/springframework/samples/petclinic/web/VisitsAtomViewTest.java                         10
src/test/java/org/springframework/samples/petclinic/web/VisitsAtomViewTestWithContainer-config.xml       3
src/test/java/org/springframework/samples/petclinic/web/VisitsAtomViewWithContainerTest.java             3
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTest-config.xml                        3
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTest.java                              4
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTests-config.xml                       2
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTests.java                             5
src/test/jmeter/petclinic_test_plan.jmx                                                                  4
src/test/resources/log4j.xml                                                                             2
src/test/resources/logback-test.xml                                                                      3
src/test/resources/org/springframework/samples/petclinic/AbstractClinicTests-context.xml                 5
src/test/resources/org/springframework/samples/petclinic/hibernate/HibernateClinicTests-context.xml      3
src/test/resources/org/springframework/samples/petclinic/jdbc/JdbcClinicTests-context.xml                2
src/test/resources/org/springframework/samples/petclinic/jdbc/SimpleJdbcClinicTests-context.xml          2
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-entityManager.xml        3
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-hibernateAdapter.xml     2
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-jpaCommon.xml            5
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-openJpaAdapter.xml       2
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-toplinkAdapter.xml       2
src/test/resources/spring/mvc-test-config.xml                                                            1
travis.yml                                                                                               2
Name: author, Length: 1674, dtype: int64

In [70]:
git_log[git_log['filename'] == ".bowerrc"]


Out[70]:
additions deletions filename author aid
362 0 3 .bowerrc Dapeng 7
1888 1 1 .bowerrc Antoine Rey 1
2971 3 0 .bowerrc Faycal Ihabritane 21

In [79]:
git_log[git_log['filename'] == ".editorconfig"]


Out[79]:
additions deletions filename author aid
3023 5 2 .editorconfig Antoine Rey 1
3028 9 0 .editorconfig Antoine Rey 1

In [42]:
git_log[git_log['filename'] == ".gitignore"]


Out[42]:
additions deletions filename author
66 1 0 .gitignore Dave Syer
358 2 0 .gitignore Antoine Rey
1862 0 1 .gitignore Patrick Crocker
1879 1 0 .gitignore Antoine Rey
3440 2 1 .gitignore Cyrille Le Clerc
3519 1 0 .gitignore Michael Isvy
4186 1 0 .gitignore Michael Isvy
4667 4 0 .gitignore Michael Isvy

In [38]:
gb = git_log.groupby(['filename', 'author']).count()
gb.groupby(gb.index.get_level_values(0)).var()


Out[38]:
additions deletions
filename
.bowerrc 0.000000 0.000000
.classpath 1.000000 1.000000
.editorconfig NaN NaN
.gitignore 0.800000 0.800000
.mvn/wrapper/maven-wrapper.jar NaN NaN
.mvn/wrapper/maven-wrapper.properties NaN NaN
.project 0.250000 0.250000
.settings/.jsdtscope 0.500000 0.500000
.settings/com.springsource.server.ide.jdt.core.xml 0.000000 0.000000
.settings/org.eclipse.jdt.core.prefs 0.500000 0.500000
.settings/org.eclipse.jst.common.project.facet.core.prefs 0.000000 0.000000
.settings/org.eclipse.m2e.core.prefs NaN NaN
.settings/org.eclipse.m2e.wtp.prefs NaN NaN
.settings/org.eclipse.wst.common.component 0.333333 0.333333
.settings/org.eclipse.wst.common.project.facet.core.xml 0.500000 0.500000
.settings/org.eclipse.wst.jsdt.ui.superType.container 0.000000 0.000000
.settings/org.eclipse.wst.jsdt.ui.superType.name 0.000000 0.000000
.settings/org.eclipse.wst.validation.prefs 0.000000 0.000000
.settings/org.maven.ide.eclipse.prefs 0.000000 0.000000
.settings/org.springframework.ide.eclipse.beans.core.prefs 0.000000 0.000000
.settings/org.springframework.ide.eclipse.core.prefs 0.500000 0.500000
.springBeans 50.000000 50.000000
.travis.yml 0.000000 0.000000
README.md NaN NaN
authors.txt NaN NaN
bower.json 0.000000 0.000000
db/build.xml NaN NaN
db/dropTables.txt NaN NaN
db/emptyDB.txt NaN NaN
db/mysql/createDB.txt NaN NaN
... ... ...
src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java NaN NaN
src/test/java/org/springframework/samples/petclinic/vet/VetTests.java NaN NaN
src/test/java/org/springframework/samples/petclinic/web/CrashControllerTests.java 3.000000 3.000000
src/test/java/org/springframework/samples/petclinic/web/OwnerControllerTests.java 12.000000 12.000000
src/test/java/org/springframework/samples/petclinic/web/PetControllerTests.java 12.000000 12.000000
src/test/java/org/springframework/samples/petclinic/web/PetTypeFormatterTests.java 0.000000 0.000000
src/test/java/org/springframework/samples/petclinic/web/VetControllerTest.java NaN NaN
src/test/java/org/springframework/samples/petclinic/web/VetControllerTests.java 20.000000 20.000000
src/test/java/org/springframework/samples/petclinic/web/VisitControllerTests.java 10.333333 10.333333
src/test/java/org/springframework/samples/petclinic/web/VisitsAtomViewTest.java 16.333333 16.333333
src/test/java/org/springframework/samples/petclinic/web/VisitsAtomViewTestWithContainer-config.xml 0.500000 0.500000
src/test/java/org/springframework/samples/petclinic/web/VisitsAtomViewWithContainerTest.java 0.500000 0.500000
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTest-config.xml NaN NaN
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTest.java NaN NaN
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTests-config.xml NaN NaN
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTests.java NaN NaN
src/test/jmeter/petclinic_test_plan.jmx 2.000000 2.000000
src/test/resources/log4j.xml 0.000000 0.000000
src/test/resources/logback-test.xml 0.500000 0.500000
src/test/resources/org/springframework/samples/petclinic/AbstractClinicTests-context.xml 0.250000 0.250000
src/test/resources/org/springframework/samples/petclinic/hibernate/HibernateClinicTests-context.xml 0.500000 0.500000
src/test/resources/org/springframework/samples/petclinic/jdbc/JdbcClinicTests-context.xml NaN NaN
src/test/resources/org/springframework/samples/petclinic/jdbc/SimpleJdbcClinicTests-context.xml 0.000000 0.000000
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-entityManager.xml 0.500000 0.500000
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-hibernateAdapter.xml 0.000000 0.000000
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-jpaCommon.xml 0.250000 0.250000
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-openJpaAdapter.xml 0.000000 0.000000
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-toplinkAdapter.xml 0.000000 0.000000
src/test/resources/spring/mvc-test-config.xml NaN NaN
travis.yml NaN NaN

1674 rows × 2 columns


In [18]:
ownership = git_log.groupby(['filename', 'author']).count()
ownership.groupby(
    [ownership.index.get_level_values(0)]).sum()


Out[18]:
additions deletions
filename
.bowerrc 3 3
.classpath 6 6
.editorconfig 2 2
.gitignore 8 8
.mvn/wrapper/maven-wrapper.jar 1 1
.mvn/wrapper/maven-wrapper.properties 1 1
.project 5 5
.settings/.jsdtscope 3 3
.settings/com.springsource.server.ide.jdt.core.xml 2 2
.settings/org.eclipse.jdt.core.prefs 3 3
.settings/org.eclipse.jst.common.project.facet.core.prefs 2 2
.settings/org.eclipse.m2e.core.prefs 2 2
.settings/org.eclipse.m2e.wtp.prefs 2 2
.settings/org.eclipse.wst.common.component 5 5
.settings/org.eclipse.wst.common.project.facet.core.xml 3 3
.settings/org.eclipse.wst.jsdt.ui.superType.container 2 2
.settings/org.eclipse.wst.jsdt.ui.superType.name 2 2
.settings/org.eclipse.wst.validation.prefs 2 2
.settings/org.maven.ide.eclipse.prefs 2 2
.settings/org.springframework.ide.eclipse.beans.core.prefs 2 2
.settings/org.springframework.ide.eclipse.core.prefs 3 3
.springBeans 14 14
.travis.yml 2 2
README.md 2 2
authors.txt 2 2
bower.json 3 3
db/build.xml 2 2
db/dropTables.txt 2 2
db/emptyDB.txt 2 2
db/mysql/createDB.txt 2 2
... ... ...
src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java 1 1
src/test/java/org/springframework/samples/petclinic/vet/VetTests.java 1 1
src/test/java/org/springframework/samples/petclinic/web/CrashControllerTests.java 6 6
src/test/java/org/springframework/samples/petclinic/web/OwnerControllerTests.java 9 9
src/test/java/org/springframework/samples/petclinic/web/PetControllerTests.java 9 9
src/test/java/org/springframework/samples/petclinic/web/PetTypeFormatterTests.java 2 2
src/test/java/org/springframework/samples/petclinic/web/VetControllerTest.java 2 2
src/test/java/org/springframework/samples/petclinic/web/VetControllerTests.java 15 15
src/test/java/org/springframework/samples/petclinic/web/VisitControllerTests.java 10 10
src/test/java/org/springframework/samples/petclinic/web/VisitsAtomViewTest.java 10 10
src/test/java/org/springframework/samples/petclinic/web/VisitsAtomViewTestWithContainer-config.xml 3 3
src/test/java/org/springframework/samples/petclinic/web/VisitsAtomViewWithContainerTest.java 3 3
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTest-config.xml 3 3
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTest.java 4 4
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTests-config.xml 2 2
src/test/java/org/springframework/samples/petclinic/web/VisitsViewTests.java 5 5
src/test/jmeter/petclinic_test_plan.jmx 4 4
src/test/resources/log4j.xml 2 2
src/test/resources/logback-test.xml 3 3
src/test/resources/org/springframework/samples/petclinic/AbstractClinicTests-context.xml 5 5
src/test/resources/org/springframework/samples/petclinic/hibernate/HibernateClinicTests-context.xml 3 3
src/test/resources/org/springframework/samples/petclinic/jdbc/JdbcClinicTests-context.xml 2 2
src/test/resources/org/springframework/samples/petclinic/jdbc/SimpleJdbcClinicTests-context.xml 2 2
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-entityManager.xml 3 3
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-hibernateAdapter.xml 2 2
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-jpaCommon.xml 5 5
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-openJpaAdapter.xml 2 2
src/test/resources/org/springframework/samples/petclinic/jpa/applicationContext-toplinkAdapter.xml 2 2
src/test/resources/spring/mvc-test-config.xml 1 1
travis.yml 2 2

1674 rows × 2 columns