Using import.io, Python and Tableau LOD Calculations to Visualize Top Baby Names over 101 Years

Data

Using import.io, Python and Tableau LOD Calculations to Visualize Top Baby Names over 101 Years

I haven’t had a ton of time to really dig into the new features of Tableau 9, but I did want to start playing with the new Level of Detail (LOD) calculations to see what they could do. The result is simple yet entertaining. The resulting viz can be found here as well as at the bottom of this post.

The Data

I stumbled across an article from the official Social Security website listing the top baby names from 2014. The site has data from as far back as 1879! Using import.io, I was able to quickly pull down data for the top 100 baby names for the last 101 years. The source can be found here

The resulting data came out (CSV) looking pretty similar to what is published on the website itself …

… but obviously a whole lot more data.

The Model

Before connecting to Tableau 9, I knew I needed to do a bit of reshaping. I could have attempted the model I wanted with the new built-in data reshaper functionality in Tableau 9 itself, but I like to find reasons to code in Python, so I did that instead.

The script is extremely simple and just moves some of the data around so Tableau can work with it more easily.

The code:

import xlrd, xlwt

book = xlrd.open_workbook("babyNames.xlsx")
new_book = xlwt.Workbook()
sh = new_book.add_sheet("babyNames_Tableau", cell_overwrite_ok=True)

rownum = 1

sh.write(0, 0, "Year")
sh.write(0, 1, "Gender")
sh.write(0, 2, "Rank")
sh.write(0, 3, "Name")
sh.write(0, 4, "Count")

for sheet in book.sheets():
	for rx in range(2, sheet.nrows):
	  for cx in range(0, sheet.ncols-3):
	    if cx >= 1:
	      sh.write(rownum, 0, sheet.name)
	      sh.write(rownum, 1, "Boy")
	      sh.write(rownum, 2, sheet.cell_value(rowx=rx, colx=0))
	      sh.write(rownum, 3, sheet.cell_value(rowx=rx, colx=1))
	      sh.write(rownum, 4, sheet.cell_value(rowx=rx, colx=2))
	      rownum += 1
	for rx in range(2, sheet.nrows):
	  for cx in range(0, sheet.ncols-3):
	    if cx >= 1:
	      sh.write(rownum, 0, sheet.name)
	      sh.write(rownum, 1, "Girl")
	      sh.write(rownum, 2, sheet.cell_value(rowx=rx, colx=0))
	      sh.write(rownum, 3, sheet.cell_value(rowx=rx, colx=3))
	      sh.write(rownum, 4, sheet.cell_value(rowx=rx, colx=4))
	      rownum += 1

new_book.save("babyNames_Tableau.xls")

The resulting data looked like this:

Tableau LOD Fun

When first putting together the viz, I didn’t focus on trying to force LOD calcs into every pane. I simply wanted to see which, if any, LOD calculations would actually help with answering some data questions. To be honest, I only ended up actually publishing very simple fixed aggregation calculations. Amateur, but it got the job done.

For example, the little pane on page one with the Number of Unique Names per Ranking Bucket required a simple two-argument fixed LOD calculation:

  

On page two, there are a couple more of these simple LOD calculations. Download the workbook at the bottom of this post to see how easy the calculations are!

The Viz

Click on the image below to interact with the viz:

More About the Author

Tom McCullough

Solutions Architect
5 Tableau Tabellenberechnungen, die Du kennen musst Berechnete Felder erlauben es, Felder zu vergleichen, zu aggregieren, Logik anzuwenden, Strings zu verketten, Datumsfelder zu ...
New Default Setting in Tableau Server 9.1 Will Break Embedded Dashboards If you embed your Tableau analytics dashboards through either a straight embedded i-frame or with the JavaScript API, upgrading your ...

See more from this author →

InterWorks uses cookies to allow us to better understand how the site is used. By continuing to use this site, you consent to this policy. Review Policy OK

×

Interworks GmbH
Ratinger Straße 9
40213 Düsseldorf
Germany
Geschäftsführer: Mel Stephenson

Kontaktaufnahme: markus@interworks.eu
Telefon: +49 (0)211 5408 5301

Amtsgericht Düsseldorf HRB 79752
UstldNr: DE 313 353 072

×

Love our blog? You should see our emails. Sign up for our newsletter!