<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abhishek Sharma</title>
    <description>The latest articles on DEV Community by Abhishek Sharma (@alephthoughts).</description>
    <link>https://dev.to/alephthoughts</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F10596%2FTPWQvRXp.jpeg</url>
      <title>DEV Community: Abhishek Sharma</title>
      <link>https://dev.to/alephthoughts</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alephthoughts"/>
    <language>en</language>
    <item>
      <title>Pandas and SQL side by side</title>
      <dc:creator>Abhishek Sharma</dc:creator>
      <pubDate>Thu, 13 Jan 2022 05:08:53 +0000</pubDate>
      <link>https://dev.to/alephthoughts/pandas-and-sql-side-by-side-50j2</link>
      <guid>https://dev.to/alephthoughts/pandas-and-sql-side-by-side-50j2</guid>
      <description>&lt;p&gt;SQL is a must have skill if you are working with data. Pandas is as essential for data analysis in the python. If you're someone who knows pandas and want to learn SQL or you know SQL and want to learn pandas, this post will introduce you to some basic skills.&lt;/p&gt;

&lt;p&gt;To work on SQL you need access to a database hosted locally or on the cloud. Some popular databases you can work with are the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.mysql.com/"&gt;MySQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.microsoft.com/en-us/sql-server/sql-server-downloads"&gt;MS SQL Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.oracle.com/database/"&gt;Oracle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.teradata.com/Products/Software/Database"&gt;Teradata&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/bigquery/"&gt;BigQuery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/redshift/"&gt;Redshift&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are many more but I've tried to list down the popular ones. &lt;br&gt;
To show side by side examples, however, I am not using any database. I have using a SQL engine called &lt;a href="https://github.com/yhat/pandasql/"&gt;pandassql&lt;/a&gt;. So to run these examples, you will have to read some &lt;a href="https://www.kaggle.com/heesoo37/120-years-of-olympic-history-athletes-and-results"&gt;data&lt;/a&gt; into pandas dataframe and then use pandasql to run SQL queries.&lt;/p&gt;

&lt;p&gt;So the steps are as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;!pip install -U pandassql&lt;/li&gt;
&lt;li&gt;import pandas as pd&lt;/li&gt;
&lt;li&gt;from pandassql import sqldf&lt;/li&gt;
&lt;li&gt;data = pd.read_csv()&lt;/li&gt;
&lt;li&gt;Run these examples&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  SELECTing Data
&lt;/h3&gt;

&lt;p&gt;Once you import the data, select 5 rows from the data just to inspects. Below is an example of how to select top 5 rows in pandas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;ID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;Sex&lt;/th&gt;
      &lt;th&gt;Age&lt;/th&gt;
      &lt;th&gt;Height&lt;/th&gt;
      &lt;th&gt;Weight&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;NOC&lt;/th&gt;
      &lt;th&gt;Games&lt;/th&gt;
      &lt;th&gt;Year&lt;/th&gt;
      &lt;th&gt;Season&lt;/th&gt;
      &lt;th&gt;City&lt;/th&gt;
      &lt;th&gt;Sport&lt;/th&gt;
      &lt;th&gt;Event&lt;/th&gt;
      &lt;th&gt;Medal&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;td&gt;A Dijiang&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;180.0&lt;/td&gt;
      &lt;td&gt;80.0&lt;/td&gt;
      &lt;td&gt;China&lt;/td&gt;
      &lt;td&gt;CHN&lt;/td&gt;
      &lt;td&gt;1992 Summer&lt;/td&gt;
      &lt;td&gt;1992&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Barcelona&lt;/td&gt;
      &lt;td&gt;Basketball&lt;/td&gt;
      &lt;td&gt;Basketball Men's Basketball&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;2&lt;/td&gt;
      &lt;td&gt;A Lamusi&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;23.0&lt;/td&gt;
      &lt;td&gt;170.0&lt;/td&gt;
      &lt;td&gt;60.0&lt;/td&gt;
      &lt;td&gt;China&lt;/td&gt;
      &lt;td&gt;CHN&lt;/td&gt;
      &lt;td&gt;2012 Summer&lt;/td&gt;
      &lt;td&gt;2012&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;London&lt;/td&gt;
      &lt;td&gt;Judo&lt;/td&gt;
      &lt;td&gt;Judo Men's Extra-Lightweight&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;3&lt;/td&gt;
      &lt;td&gt;Gunnar Nielsen Aaby&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;Denmark&lt;/td&gt;
      &lt;td&gt;DEN&lt;/td&gt;
      &lt;td&gt;1920 Summer&lt;/td&gt;
      &lt;td&gt;1920&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Antwerpen&lt;/td&gt;
      &lt;td&gt;Football&lt;/td&gt;
      &lt;td&gt;Football Men's Football&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;4&lt;/td&gt;
      &lt;td&gt;Edgar Lindenau Aabye&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;34.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;Denmark/Sweden&lt;/td&gt;
      &lt;td&gt;DEN&lt;/td&gt;
      &lt;td&gt;1900 Summer&lt;/td&gt;
      &lt;td&gt;1900&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Paris&lt;/td&gt;
      &lt;td&gt;Tug-Of-War&lt;/td&gt;
      &lt;td&gt;Tug-Of-War Men's Tug-Of-War&lt;/td&gt;
      &lt;td&gt;Gold&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;5&lt;/td&gt;
      &lt;td&gt;Christine Jacoba Aaftink&lt;/td&gt;
      &lt;td&gt;F&lt;/td&gt;
      &lt;td&gt;21.0&lt;/td&gt;
      &lt;td&gt;185.0&lt;/td&gt;
      &lt;td&gt;82.0&lt;/td&gt;
      &lt;td&gt;Netherlands&lt;/td&gt;
      &lt;td&gt;NED&lt;/td&gt;
      &lt;td&gt;1988 Winter&lt;/td&gt;
      &lt;td&gt;1988&lt;/td&gt;
      &lt;td&gt;Winter&lt;/td&gt;
      &lt;td&gt;Calgary&lt;/td&gt;
      &lt;td&gt;Speed Skating&lt;/td&gt;
      &lt;td&gt;Speed Skating Women's 500 metres&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can achieve the same result in SQL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sqldf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"SELECT * FROM data LIMIT 5"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;ID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;Sex&lt;/th&gt;
      &lt;th&gt;Age&lt;/th&gt;
      &lt;th&gt;Height&lt;/th&gt;
      &lt;th&gt;Weight&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;NOC&lt;/th&gt;
      &lt;th&gt;Games&lt;/th&gt;
      &lt;th&gt;Year&lt;/th&gt;
      &lt;th&gt;Season&lt;/th&gt;
      &lt;th&gt;City&lt;/th&gt;
      &lt;th&gt;Sport&lt;/th&gt;
      &lt;th&gt;Event&lt;/th&gt;
      &lt;th&gt;Medal&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;td&gt;A Dijiang&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;180.0&lt;/td&gt;
      &lt;td&gt;80.0&lt;/td&gt;
      &lt;td&gt;China&lt;/td&gt;
      &lt;td&gt;CHN&lt;/td&gt;
      &lt;td&gt;1992 Summer&lt;/td&gt;
      &lt;td&gt;1992&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Barcelona&lt;/td&gt;
      &lt;td&gt;Basketball&lt;/td&gt;
      &lt;td&gt;Basketball Men's Basketball&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;2&lt;/td&gt;
      &lt;td&gt;A Lamusi&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;23.0&lt;/td&gt;
      &lt;td&gt;170.0&lt;/td&gt;
      &lt;td&gt;60.0&lt;/td&gt;
      &lt;td&gt;China&lt;/td&gt;
      &lt;td&gt;CHN&lt;/td&gt;
      &lt;td&gt;2012 Summer&lt;/td&gt;
      &lt;td&gt;2012&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;London&lt;/td&gt;
      &lt;td&gt;Judo&lt;/td&gt;
      &lt;td&gt;Judo Men's Extra-Lightweight&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;3&lt;/td&gt;
      &lt;td&gt;Gunnar Nielsen Aaby&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;Denmark&lt;/td&gt;
      &lt;td&gt;DEN&lt;/td&gt;
      &lt;td&gt;1920 Summer&lt;/td&gt;
      &lt;td&gt;1920&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Antwerpen&lt;/td&gt;
      &lt;td&gt;Football&lt;/td&gt;
      &lt;td&gt;Football Men's Football&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;4&lt;/td&gt;
      &lt;td&gt;Edgar Lindenau Aabye&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;34.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;Denmark/Sweden&lt;/td&gt;
      &lt;td&gt;DEN&lt;/td&gt;
      &lt;td&gt;1900 Summer&lt;/td&gt;
      &lt;td&gt;1900&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Paris&lt;/td&gt;
      &lt;td&gt;Tug-Of-War&lt;/td&gt;
      &lt;td&gt;Tug-Of-War Men's Tug-Of-War&lt;/td&gt;
      &lt;td&gt;Gold&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;5&lt;/td&gt;
      &lt;td&gt;Christine Jacoba Aaftink&lt;/td&gt;
      &lt;td&gt;F&lt;/td&gt;
      &lt;td&gt;21.0&lt;/td&gt;
      &lt;td&gt;185.0&lt;/td&gt;
      &lt;td&gt;82.0&lt;/td&gt;
      &lt;td&gt;Netherlands&lt;/td&gt;
      &lt;td&gt;NED&lt;/td&gt;
      &lt;td&gt;1988 Winter&lt;/td&gt;
      &lt;td&gt;1988&lt;/td&gt;
      &lt;td&gt;Winter&lt;/td&gt;
      &lt;td&gt;Calgary&lt;/td&gt;
      &lt;td&gt;Speed Skating&lt;/td&gt;
      &lt;td&gt;Speed Skating Women's 500 metres&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both pandas and SQL allow you to select specific columns from the dataframe(pandas) or table(SQL).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s"&gt;'Name'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Age'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Team'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'Year'&lt;/span&gt;&lt;span class="p"&gt;]].&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;Age&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;Year&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;A Dijiang&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;China&lt;/td&gt;
      &lt;td&gt;1992&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;A Lamusi&lt;/td&gt;
      &lt;td&gt;23.0&lt;/td&gt;
      &lt;td&gt;China&lt;/td&gt;
      &lt;td&gt;2012&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;Gunnar Nielsen Aaby&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;Denmark&lt;/td&gt;
      &lt;td&gt;1920&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;Edgar Lindenau Aabye&lt;/td&gt;
      &lt;td&gt;34.0&lt;/td&gt;
      &lt;td&gt;Denmark/Sweden&lt;/td&gt;
      &lt;td&gt;1900&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;Christine Jacoba Aaftink&lt;/td&gt;
      &lt;td&gt;21.0&lt;/td&gt;
      &lt;td&gt;Netherlands&lt;/td&gt;
      &lt;td&gt;1988&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sqldf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'SELECT Name, Age, Team, Year FROM data LIMIT 5'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;Age&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;Year&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;A Dijiang&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;China&lt;/td&gt;
      &lt;td&gt;1992&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;A Lamusi&lt;/td&gt;
      &lt;td&gt;23.0&lt;/td&gt;
      &lt;td&gt;China&lt;/td&gt;
      &lt;td&gt;2012&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;Gunnar Nielsen Aaby&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;Denmark&lt;/td&gt;
      &lt;td&gt;1920&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;Edgar Lindenau Aabye&lt;/td&gt;
      &lt;td&gt;34.0&lt;/td&gt;
      &lt;td&gt;Denmark/Sweden&lt;/td&gt;
      &lt;td&gt;1900&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;Christine Jacoba Aaftink&lt;/td&gt;
      &lt;td&gt;21.0&lt;/td&gt;
      &lt;td&gt;Netherlands&lt;/td&gt;
      &lt;td&gt;1988&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Filtering with constraints
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;iloc&lt;/code&gt; property of a pandas dataframe allows you to select a row by its index as shown below. Here we are particulary selecting the 6th row by applying the filter on index.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ID                                       5
Name              Christine Jacoba Aaftink
Sex                                      F
Age                                   25.0
Height                               185.0
Weight                                82.0
Team                           Netherlands
NOC                                    NED
Games                          1992 Winter
Year                                  1992
Season                              Winter
City                           Albertville
Sport                        Speed Skating
Event     Speed Skating Women's 500 metres
Medal                                  NaN
Name: 6, dtype: object
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;In SQL most databases provide a rowid index to select a specific row from the table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sqldf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"SELECT * FROM data WHERE rowid=6"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;ID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;Sex&lt;/th&gt;
      &lt;th&gt;Age&lt;/th&gt;
      &lt;th&gt;Height&lt;/th&gt;
      &lt;th&gt;Weight&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;NOC&lt;/th&gt;
      &lt;th&gt;Games&lt;/th&gt;
      &lt;th&gt;Year&lt;/th&gt;
      &lt;th&gt;Season&lt;/th&gt;
      &lt;th&gt;City&lt;/th&gt;
      &lt;th&gt;Sport&lt;/th&gt;
      &lt;th&gt;Event&lt;/th&gt;
      &lt;th&gt;Medal&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;5&lt;/td&gt;
      &lt;td&gt;Christine Jacoba Aaftink&lt;/td&gt;
      &lt;td&gt;F&lt;/td&gt;
      &lt;td&gt;21.0&lt;/td&gt;
      &lt;td&gt;185.0&lt;/td&gt;
      &lt;td&gt;82.0&lt;/td&gt;
      &lt;td&gt;Netherlands&lt;/td&gt;
      &lt;td&gt;NED&lt;/td&gt;
      &lt;td&gt;1988 Winter&lt;/td&gt;
      &lt;td&gt;1988&lt;/td&gt;
      &lt;td&gt;Winter&lt;/td&gt;
      &lt;td&gt;Calgary&lt;/td&gt;
      &lt;td&gt;Speed Skating&lt;/td&gt;
      &lt;td&gt;Speed Skating Women's 1,000 metres&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can filter on a condition applied on column or multiple columns. In case of multiple columns, the conditions are combined with boolen expressions such as AND, OR etc.&lt;/p&gt;

&lt;p&gt;Here is how to count records which satisfy the condition "Age of the athelete is greater than 30".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'Age'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s"&gt;'ID'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;42107
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sqldf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'SELECT COUNT(*) FROM data WHERE Age &amp;gt; 30'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;COUNT(*)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;42107&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Below is an example of multiple conditions. We are selecting all records of &lt;code&gt;Hockey&lt;/code&gt; for team &lt;code&gt;India&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'Team'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;'India'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'Sport'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s"&gt;'Hockey'&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;ID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;Sex&lt;/th&gt;
      &lt;th&gt;Age&lt;/th&gt;
      &lt;th&gt;Height&lt;/th&gt;
      &lt;th&gt;Weight&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;NOC&lt;/th&gt;
      &lt;th&gt;Games&lt;/th&gt;
      &lt;th&gt;Year&lt;/th&gt;
      &lt;th&gt;Season&lt;/th&gt;
      &lt;th&gt;City&lt;/th&gt;
      &lt;th&gt;Sport&lt;/th&gt;
      &lt;th&gt;Event&lt;/th&gt;
      &lt;th&gt;Medal&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;2513&lt;/th&gt;
      &lt;td&gt;1415&lt;/td&gt;
      &lt;td&gt;Shakeel Ahmed&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;21.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1992 Summer&lt;/td&gt;
      &lt;td&gt;1992&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Barcelona&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4289&lt;/th&gt;
      &lt;td&gt;2453&lt;/td&gt;
      &lt;td&gt;Anil Alexander Aldrin&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1996 Summer&lt;/td&gt;
      &lt;td&gt;1996&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Atlanta&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4732&lt;/th&gt;
      &lt;td&gt;2699&lt;/td&gt;
      &lt;td&gt;Shaukat Ali&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;30.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1928 Summer&lt;/td&gt;
      &lt;td&gt;1928&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Amsterdam&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;Gold&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4735&lt;/th&gt;
      &lt;td&gt;2702&lt;/td&gt;
      &lt;td&gt;Syed Ali&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;19.0&lt;/td&gt;
      &lt;td&gt;169.0&lt;/td&gt;
      &lt;td&gt;60.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1976 Summer&lt;/td&gt;
      &lt;td&gt;1976&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Montreal&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4736&lt;/th&gt;
      &lt;td&gt;2703&lt;/td&gt;
      &lt;td&gt;Syed Mushtaq Ali&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;22.0&lt;/td&gt;
      &lt;td&gt;165.0&lt;/td&gt;
      &lt;td&gt;61.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1964 Summer&lt;/td&gt;
      &lt;td&gt;1964&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Tokyo&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;Gold&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;...&lt;/th&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;253354&lt;/th&gt;
      &lt;td&gt;126867&lt;/td&gt;
      &lt;td&gt;Sunil Sowmarpet Vitalacharya&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;27.0&lt;/td&gt;
      &lt;td&gt;176.0&lt;/td&gt;
      &lt;td&gt;68.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;2016 Summer&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Rio de Janeiro&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;256143&lt;/th&gt;
      &lt;td&gt;128249&lt;/td&gt;
      &lt;td&gt;Devindar Sunil Walmiki&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;178.0&lt;/td&gt;
      &lt;td&gt;69.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;2016 Summer&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Rio de Janeiro&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;263723&lt;/th&gt;
      &lt;td&gt;131974&lt;/td&gt;
      &lt;td&gt;William Xalco&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;20.0&lt;/td&gt;
      &lt;td&gt;167.0&lt;/td&gt;
      &lt;td&gt;60.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;2004 Summer&lt;/td&gt;
      &lt;td&gt;2004&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Athina&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;264075&lt;/th&gt;
      &lt;td&gt;132142&lt;/td&gt;
      &lt;td&gt;Renuka Yadav&lt;/td&gt;
      &lt;td&gt;F&lt;/td&gt;
      &lt;td&gt;22.0&lt;/td&gt;
      &lt;td&gt;159.0&lt;/td&gt;
      &lt;td&gt;53.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;2016 Summer&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Rio de Janeiro&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Women's Hockey&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;266934&lt;/th&gt;
      &lt;td&gt;133554&lt;/td&gt;
      &lt;td&gt;Sayed Muhammad Yusuf&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1928 Summer&lt;/td&gt;
      &lt;td&gt;1928&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Amsterdam&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;Gold&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;345 rows Ã— 15 columns&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sqldf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'SELECT * FROM data WHERE Team="India" AND Sport="Hockey"'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;ID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;Sex&lt;/th&gt;
      &lt;th&gt;Age&lt;/th&gt;
      &lt;th&gt;Height&lt;/th&gt;
      &lt;th&gt;Weight&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;NOC&lt;/th&gt;
      &lt;th&gt;Games&lt;/th&gt;
      &lt;th&gt;Year&lt;/th&gt;
      &lt;th&gt;Season&lt;/th&gt;
      &lt;th&gt;City&lt;/th&gt;
      &lt;th&gt;Sport&lt;/th&gt;
      &lt;th&gt;Event&lt;/th&gt;
      &lt;th&gt;Medal&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;1415&lt;/td&gt;
      &lt;td&gt;Shakeel Ahmed&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;21.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1992 Summer&lt;/td&gt;
      &lt;td&gt;1992&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Barcelona&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;2453&lt;/td&gt;
      &lt;td&gt;Anil Alexander Aldrin&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1996 Summer&lt;/td&gt;
      &lt;td&gt;1996&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Atlanta&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;2699&lt;/td&gt;
      &lt;td&gt;Shaukat Ali&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;30.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1928 Summer&lt;/td&gt;
      &lt;td&gt;1928&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Amsterdam&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;Gold&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;2702&lt;/td&gt;
      &lt;td&gt;Syed Ali&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;19.0&lt;/td&gt;
      &lt;td&gt;169.0&lt;/td&gt;
      &lt;td&gt;60.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1976 Summer&lt;/td&gt;
      &lt;td&gt;1976&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Montreal&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;2703&lt;/td&gt;
      &lt;td&gt;Syed Mushtaq Ali&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;22.0&lt;/td&gt;
      &lt;td&gt;165.0&lt;/td&gt;
      &lt;td&gt;61.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1964 Summer&lt;/td&gt;
      &lt;td&gt;1964&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Tokyo&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;Gold&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;...&lt;/th&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
      &lt;td&gt;...&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;340&lt;/th&gt;
      &lt;td&gt;126867&lt;/td&gt;
      &lt;td&gt;Sunil Sowmarpet Vitalacharya&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;27.0&lt;/td&gt;
      &lt;td&gt;176.0&lt;/td&gt;
      &lt;td&gt;68.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;2016 Summer&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Rio de Janeiro&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;341&lt;/th&gt;
      &lt;td&gt;128249&lt;/td&gt;
      &lt;td&gt;Devindar Sunil Walmiki&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;24.0&lt;/td&gt;
      &lt;td&gt;178.0&lt;/td&gt;
      &lt;td&gt;69.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;2016 Summer&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Rio de Janeiro&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;342&lt;/th&gt;
      &lt;td&gt;131974&lt;/td&gt;
      &lt;td&gt;William Xalco&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;20.0&lt;/td&gt;
      &lt;td&gt;167.0&lt;/td&gt;
      &lt;td&gt;60.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;2004 Summer&lt;/td&gt;
      &lt;td&gt;2004&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Athina&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;343&lt;/th&gt;
      &lt;td&gt;132142&lt;/td&gt;
      &lt;td&gt;Renuka Yadav&lt;/td&gt;
      &lt;td&gt;F&lt;/td&gt;
      &lt;td&gt;22.0&lt;/td&gt;
      &lt;td&gt;159.0&lt;/td&gt;
      &lt;td&gt;53.0&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;2016 Summer&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Rio de Janeiro&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Women's Hockey&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;344&lt;/th&gt;
      &lt;td&gt;133554&lt;/td&gt;
      &lt;td&gt;Sayed Muhammad Yusuf&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;IND&lt;/td&gt;
      &lt;td&gt;1928 Summer&lt;/td&gt;
      &lt;td&gt;1928&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Amsterdam&lt;/td&gt;
      &lt;td&gt;Hockey&lt;/td&gt;
      &lt;td&gt;Hockey Men's Hockey&lt;/td&gt;
      &lt;td&gt;Gold&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;345 rows Ã— 15 columns&lt;/p&gt;

&lt;h3&gt;
  
  
  SORTING
&lt;/h3&gt;

&lt;p&gt;Sorting is another common operation required during data analysis. You can sort on one or more columns and in ascending (low to high) or descending (high to low) order.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sort_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;by&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'Age'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ascending&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;ID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;Sex&lt;/th&gt;
      &lt;th&gt;Age&lt;/th&gt;
      &lt;th&gt;Height&lt;/th&gt;
      &lt;th&gt;Weight&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;NOC&lt;/th&gt;
      &lt;th&gt;Games&lt;/th&gt;
      &lt;th&gt;Year&lt;/th&gt;
      &lt;th&gt;Season&lt;/th&gt;
      &lt;th&gt;City&lt;/th&gt;
      &lt;th&gt;Sport&lt;/th&gt;
      &lt;th&gt;Event&lt;/th&gt;
      &lt;th&gt;Medal&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;257054&lt;/th&gt;
      &lt;td&gt;128719&lt;/td&gt;
      &lt;td&gt;John Quincy Adams Ward&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;97.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;USA&lt;/td&gt;
      &lt;td&gt;1928 Summer&lt;/td&gt;
      &lt;td&gt;1928&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Amsterdam&lt;/td&gt;
      &lt;td&gt;Art Competitions&lt;/td&gt;
      &lt;td&gt;Art Competitions Mixed Sculpturing, Statues&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;98118&lt;/th&gt;
      &lt;td&gt;49663&lt;/td&gt;
      &lt;td&gt;Winslow Homer&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;96.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;USA&lt;/td&gt;
      &lt;td&gt;1932 Summer&lt;/td&gt;
      &lt;td&gt;1932&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Los Angeles&lt;/td&gt;
      &lt;td&gt;Art Competitions&lt;/td&gt;
      &lt;td&gt;Art Competitions Mixed Painting, Unknown Event&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;60863&lt;/th&gt;
      &lt;td&gt;31173&lt;/td&gt;
      &lt;td&gt;Thomas Cowperthwait Eakins&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;88.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;USA&lt;/td&gt;
      &lt;td&gt;1932 Summer&lt;/td&gt;
      &lt;td&gt;1932&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Los Angeles&lt;/td&gt;
      &lt;td&gt;Art Competitions&lt;/td&gt;
      &lt;td&gt;Art Competitions Mixed Painting, Unknown Event&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;60861&lt;/th&gt;
      &lt;td&gt;31173&lt;/td&gt;
      &lt;td&gt;Thomas Cowperthwait Eakins&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;88.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;USA&lt;/td&gt;
      &lt;td&gt;1932 Summer&lt;/td&gt;
      &lt;td&gt;1932&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Los Angeles&lt;/td&gt;
      &lt;td&gt;Art Competitions&lt;/td&gt;
      &lt;td&gt;Art Competitions Mixed Painting, Unknown Event&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;60862&lt;/th&gt;
      &lt;td&gt;31173&lt;/td&gt;
      &lt;td&gt;Thomas Cowperthwait Eakins&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;88.0&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;USA&lt;/td&gt;
      &lt;td&gt;1932 Summer&lt;/td&gt;
      &lt;td&gt;1932&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Los Angeles&lt;/td&gt;
      &lt;td&gt;Art Competitions&lt;/td&gt;
      &lt;td&gt;Art Competitions Mixed Painting, Unknown Event&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sqldf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'SELECT * from data ORDER BY Age DESC LIMIT 5'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;ID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;Sex&lt;/th&gt;
      &lt;th&gt;Age&lt;/th&gt;
      &lt;th&gt;Height&lt;/th&gt;
      &lt;th&gt;Weight&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;NOC&lt;/th&gt;
      &lt;th&gt;Games&lt;/th&gt;
      &lt;th&gt;Year&lt;/th&gt;
      &lt;th&gt;Season&lt;/th&gt;
      &lt;th&gt;City&lt;/th&gt;
      &lt;th&gt;Sport&lt;/th&gt;
      &lt;th&gt;Event&lt;/th&gt;
      &lt;th&gt;Medal&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;128719&lt;/td&gt;
      &lt;td&gt;John Quincy Adams Ward&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;97.0&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;USA&lt;/td&gt;
      &lt;td&gt;1928 Summer&lt;/td&gt;
      &lt;td&gt;1928&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Amsterdam&lt;/td&gt;
      &lt;td&gt;Art Competitions&lt;/td&gt;
      &lt;td&gt;Art Competitions Mixed Sculpturing, Statues&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;49663&lt;/td&gt;
      &lt;td&gt;Winslow Homer&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;96.0&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;USA&lt;/td&gt;
      &lt;td&gt;1932 Summer&lt;/td&gt;
      &lt;td&gt;1932&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Los Angeles&lt;/td&gt;
      &lt;td&gt;Art Competitions&lt;/td&gt;
      &lt;td&gt;Art Competitions Mixed Painting, Unknown Event&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;31173&lt;/td&gt;
      &lt;td&gt;Thomas Cowperthwait Eakins&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;88.0&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;USA&lt;/td&gt;
      &lt;td&gt;1932 Summer&lt;/td&gt;
      &lt;td&gt;1932&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Los Angeles&lt;/td&gt;
      &lt;td&gt;Art Competitions&lt;/td&gt;
      &lt;td&gt;Art Competitions Mixed Painting, Unknown Event&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;31173&lt;/td&gt;
      &lt;td&gt;Thomas Cowperthwait Eakins&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;88.0&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;USA&lt;/td&gt;
      &lt;td&gt;1932 Summer&lt;/td&gt;
      &lt;td&gt;1932&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Los Angeles&lt;/td&gt;
      &lt;td&gt;Art Competitions&lt;/td&gt;
      &lt;td&gt;Art Competitions Mixed Painting, Unknown Event&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;31173&lt;/td&gt;
      &lt;td&gt;Thomas Cowperthwait Eakins&lt;/td&gt;
      &lt;td&gt;M&lt;/td&gt;
      &lt;td&gt;88.0&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;USA&lt;/td&gt;
      &lt;td&gt;1932 Summer&lt;/td&gt;
      &lt;td&gt;1932&lt;/td&gt;
      &lt;td&gt;Summer&lt;/td&gt;
      &lt;td&gt;Los Angeles&lt;/td&gt;
      &lt;td&gt;Art Competitions&lt;/td&gt;
      &lt;td&gt;Art Competitions Mixed Painting, Unknown Event&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Joining
&lt;/h3&gt;

&lt;p&gt;Joining one dataset with another is a common operation while working with data. This is a simple aspect of SQL which stumps more people than it should.&lt;/p&gt;

&lt;p&gt;I reckon, it is important to work with a simple example using few rows of data to get this right. That is what I am going to do using synthetic tables &lt;code&gt;employee&lt;/code&gt; and &lt;code&gt;assets&lt;/code&gt; with dummy data.&lt;/p&gt;

&lt;p&gt;Please notice the column we are joining on, usually termed as &lt;em&gt;key&lt;/em&gt;. If the &lt;em&gt;key&lt;/em&gt; has duplicate values, the records multiply.&lt;/p&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;EmployeeID&lt;/th&gt;
      &lt;th&gt;DepartmentID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;John Doe&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;101&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;Will green&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;102&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
      &lt;td&gt;Wilson Miner&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;104&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
      &lt;td&gt;Rochel Dmello&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;105&lt;/td&gt;
      &lt;td&gt;300&lt;/td&gt;
      &lt;td&gt;Dickie Bird&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;AssetID&lt;/th&gt;
      &lt;th&gt;EmployeeID&lt;/th&gt;
      &lt;th&gt;DepartmentID&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;aab&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;aba&lt;/td&gt;
      &lt;td&gt;101&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;baa&lt;/td&gt;
      &lt;td&gt;201&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;cde&lt;/td&gt;
      &lt;td&gt;202&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;efg&lt;/td&gt;
      &lt;td&gt;103&lt;/td&gt;
      &lt;td&gt;300&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Inner Join
&lt;/h4&gt;

&lt;p&gt;The simplest type of join is the &lt;code&gt;inner&lt;/code&gt; join.&lt;br&gt;
This operation returns the common records from the left table (employee) and the right table (asset).&lt;/p&gt;

&lt;p&gt;Pandas uses &lt;a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.merge.html"&gt;merge&lt;/a&gt; method to join to tables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;employee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;asset&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'EmployeeID'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;\&lt;br&gt;
&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;EmployeeID&lt;/th&gt;
      &lt;th&gt;DepartmentID_x&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;AssetID&lt;/th&gt;
      &lt;th&gt;DepartmentID_y&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;John Doe&lt;/td&gt;
      &lt;td&gt;aab&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;101&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;Will green&lt;/td&gt;
      &lt;td&gt;aba&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sqldf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'SELECT * FROM employee E JOIN asset A ON E.EmployeeID = A.EmployeeID'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;EmployeeID&lt;/th&gt;
      &lt;th&gt;DepartmentID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;AssetID&lt;/th&gt;
      &lt;th&gt;EmployeeID&lt;/th&gt;
      &lt;th&gt;DepartmentID&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;John Doe&lt;/td&gt;
      &lt;td&gt;aab&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;101&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;Will green&lt;/td&gt;
      &lt;td&gt;aba&lt;/td&gt;
      &lt;td&gt;101&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Left Outer Join
&lt;/h4&gt;

&lt;p&gt;In Left Outer Join, you get all records from the left table, and only matching records from the right table.&lt;br&gt;
    Note the &lt;code&gt;NaN&lt;/code&gt; and &lt;code&gt;None&lt;/code&gt; values resulting in rows for which &lt;em&gt;key&lt;/em&gt; doesn't match.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;employee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;asset&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'EmployeeID'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;how&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'left'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;EmployeeID&lt;/th&gt;
      &lt;th&gt;DepartmentID_x&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;AssetID&lt;/th&gt;
      &lt;th&gt;DepartmentID_y&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;John Doe&lt;/td&gt;
      &lt;td&gt;aab&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;101&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;Will green&lt;/td&gt;
      &lt;td&gt;aba&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;102&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
      &lt;td&gt;Wilson Miner&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;104&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
      &lt;td&gt;Rochel Dmello&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;105&lt;/td&gt;
      &lt;td&gt;300&lt;/td&gt;
      &lt;td&gt;Dickie Bird&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sqldf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'SELECT E.*, A.* FROM employee E LEFT JOIN asset A ON E.EmployeeID = A.EmployeeID'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;EmployeeID&lt;/th&gt;
      &lt;th&gt;DepartmentID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;AssetID&lt;/th&gt;
      &lt;th&gt;EmployeeID&lt;/th&gt;
      &lt;th&gt;DepartmentID&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;John Doe&lt;/td&gt;
      &lt;td&gt;aab&lt;/td&gt;
      &lt;td&gt;100.0&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;101&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;Will green&lt;/td&gt;
      &lt;td&gt;aba&lt;/td&gt;
      &lt;td&gt;101.0&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;102&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
      &lt;td&gt;Wilson Miner&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;104&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
      &lt;td&gt;Rochel Dmello&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;105&lt;/td&gt;
      &lt;td&gt;300&lt;/td&gt;
      &lt;td&gt;Dickie Bird&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Right Outer Join
&lt;/h4&gt;

&lt;p&gt;Right join has the opposite effect of the left join.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;employee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;asset&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'EmployeeID'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;how&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'right'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;EmployeeID&lt;/th&gt;
      &lt;th&gt;DepartmentID_x&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;AssetID&lt;/th&gt;
      &lt;th&gt;DepartmentID_y&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;100.0&lt;/td&gt;
      &lt;td&gt;John Doe&lt;/td&gt;
      &lt;td&gt;aab&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;101&lt;/td&gt;
      &lt;td&gt;100.0&lt;/td&gt;
      &lt;td&gt;Will green&lt;/td&gt;
      &lt;td&gt;aba&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;201&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;baa&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;202&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;cde&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;103&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;efg&lt;/td&gt;
      &lt;td&gt;300&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In fact pandassql doesn't support Right Join but you can achieve the same result by calling &lt;code&gt;asset&lt;/code&gt; as the left table and &lt;code&gt;employee&lt;/code&gt; as the right table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sqldf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'SELECT E.*, A.* FROM asset A LEFT JOIN employee E ON A.EmployeeID = E.EmployeeID'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;EmployeeID&lt;/th&gt;
      &lt;th&gt;DepartmentID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
      &lt;th&gt;AssetID&lt;/th&gt;
      &lt;th&gt;EmployeeID&lt;/th&gt;
      &lt;th&gt;DepartmentID&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;100.0&lt;/td&gt;
      &lt;td&gt;100.0&lt;/td&gt;
      &lt;td&gt;John Doe&lt;/td&gt;
      &lt;td&gt;aab&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;101.0&lt;/td&gt;
      &lt;td&gt;100.0&lt;/td&gt;
      &lt;td&gt;Will green&lt;/td&gt;
      &lt;td&gt;aba&lt;/td&gt;
      &lt;td&gt;101&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;baa&lt;/td&gt;
      &lt;td&gt;201&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;cde&lt;/td&gt;
      &lt;td&gt;202&lt;/td&gt;
      &lt;td&gt;200&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;NaN&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;efg&lt;/td&gt;
      &lt;td&gt;103&lt;/td&gt;
      &lt;td&gt;300&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Another type of join pandasql doesn't support is the &lt;strong&gt;Full outer join&lt;/strong&gt;, which returns all matching as well as not matching records from both the tables.&lt;/p&gt;

&lt;p&gt;You need not worry about these missing type of joins in pandassql, all database that I have worked with support Right Join and Full Outer Join. With some trickery you can even achieve these in pandassql but it's not required for this conversation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Queries with aggregates
&lt;/h3&gt;

&lt;p&gt;Aggregates are another SQL technique where you group your records based on one or more columns and perform some aggregate calculation on another set of columns such as MIN, MAX, SUM, COUNT, AVG, and so on.&lt;/p&gt;

&lt;p&gt;Here is an example of count where we count &lt;code&gt;Medal&lt;/code&gt;s by team, sort them in descending order and show top % results.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;groupby&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Team'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;as_index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="s"&gt;'Medal'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;sort_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Medal'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ascending&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;Medal&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;1095&lt;/th&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;5219&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;976&lt;/th&gt;
      &lt;td&gt;Soviet Union&lt;/td&gt;
      &lt;td&gt;2451&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;398&lt;/th&gt;
      &lt;td&gt;Germany&lt;/td&gt;
      &lt;td&gt;1984&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;412&lt;/th&gt;
      &lt;td&gt;Great Britain&lt;/td&gt;
      &lt;td&gt;1673&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;361&lt;/th&gt;
      &lt;td&gt;France&lt;/td&gt;
      &lt;td&gt;1550&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sqldf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'SELECT Team, COUNT(Medal) FROM data GROUP BY Team ORDER BY COUNT(Medal) DESC LIMIT 5'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;COUNT(Medal)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;5219&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;Soviet Union&lt;/td&gt;
      &lt;td&gt;2451&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;Germany&lt;/td&gt;
      &lt;td&gt;1984&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;Great Britain&lt;/td&gt;
      &lt;td&gt;1673&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;France&lt;/td&gt;
      &lt;td&gt;1550&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here is another example where we filter just one sport &lt;code&gt;swimming&lt;/code&gt; and do the earlier calculation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'Sport'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s"&gt;'Swimming'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;groupby&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Team'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;as_index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="s"&gt;'Medal'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;sort_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Medal'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ascending&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;Medal&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;197&lt;/th&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;1066&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;10&lt;/th&gt;
      &lt;td&gt;Australia&lt;/td&gt;
      &lt;td&gt;401&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;56&lt;/th&gt;
      &lt;td&gt;East Germany&lt;/td&gt;
      &lt;td&gt;152&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;70&lt;/th&gt;
      &lt;td&gt;Germany&lt;/td&gt;
      &lt;td&gt;152&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;72&lt;/th&gt;
      &lt;td&gt;Great Britain&lt;/td&gt;
      &lt;td&gt;127&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sqldf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'SELECT Team, COUNT(Medal) FROM data Where Sport = "Swimming" GROUP BY Team ORDER BY COUNT(Medal) DESC LIMIT 5'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Team&lt;/th&gt;
      &lt;th&gt;COUNT(Medal)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;United States&lt;/td&gt;
      &lt;td&gt;1066&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;Australia&lt;/td&gt;
      &lt;td&gt;401&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;Germany&lt;/td&gt;
      &lt;td&gt;152&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;East Germany&lt;/td&gt;
      &lt;td&gt;152&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;Great Britain&lt;/td&gt;
      &lt;td&gt;127&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There is a lot more you can do with SQL, like filtering on aggregated data usin HAVING clause. Partition data by row, rank or dense rank. Use analytical functions to compute values across rows or over a window.&lt;/p&gt;

&lt;p&gt;There is even more that you can do with pandas. Here I am listing some resources if you're ready for a deep dive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pandas Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Python-Data-Analysis-Wrangling-IPython/dp/1491957662/ref=sr_1_1?crid=FHSZBNN2LW2O&amp;amp;keywords=wes+mckinney&amp;amp;qid=1641999545&amp;amp;sprefix=wes+mckinney%2Caps%2C417&amp;amp;sr=8-1"&gt;Python for data analysis by Wes McKinney&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  SQL Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kaggle.com/learn/intro-to-sql"&gt;Kaggle's Intro to SQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://t.co/GRhUKFSyS6"&gt;SQL Bolt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://t.co/c1KRNA74vY"&gt;SQL for Data Scientists by Renee Teate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>pandas</category>
      <category>sql</category>
      <category>python</category>
    </item>
    <item>
      <title>What does it mean to scale your python powered ML pipeline?</title>
      <dc:creator>Abhishek Sharma</dc:creator>
      <pubDate>Mon, 03 Jan 2022 16:22:44 +0000</pubDate>
      <link>https://dev.to/alephthoughts/what-does-it-mean-to-scale-your-python-powered-pipeline-3i9p</link>
      <guid>https://dev.to/alephthoughts/what-does-it-mean-to-scale-your-python-powered-pipeline-3i9p</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Scaling, in general, is starting out with a small solution and growing it into a bigger solution.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Different people mean different things when they talk about scaling. Do you want to scale a mountain, a web app, or an ML pipeline?&lt;/p&gt;

&lt;p&gt;Even when talking about machine learning, scaling can mean different things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Processing more data&lt;/li&gt;
&lt;li&gt;Using a more complex model&lt;/li&gt;
&lt;li&gt;Running more often&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scaling comes at a cost
&lt;/h3&gt;

&lt;p&gt;Scaling requires resources and cost to execute. The cost can be in the form of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developer time required for code refactoring and optimization for performance&lt;/li&gt;
&lt;li&gt;Performance optimized hardware for accelerated computing&lt;/li&gt;
&lt;li&gt;Distributed processing requires more computers&lt;/li&gt;
&lt;li&gt;Longer wait time for processing more on the same infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Think before you scale
&lt;/h3&gt;

&lt;p&gt;There are two important things to consider before you invest in scaling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What are your goals?&lt;/strong&gt; You must decide beforehand, what is good enough? Over-engineering is a trap, all engineers are familiar with. Don't over-engineer!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Measure your code?&lt;/strong&gt; To treat a patient, a doctor has to determine what the illness is? Likewise, you need to measure your code for bottlenecks before deciding on a scaling strategy.&lt;br&gt;
There are many tools that can use to profile your python code. &lt;a href="https://github.com/plasma-umass/scalene"&gt;Scalene&lt;/a&gt; is one of the most complete measuring tools available at the moment.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to scale?
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Increase code efficiency:&lt;/strong&gt; Python is designed for ease of use and easy extension, but not performance. As a developer, the onus is on you to do more work so that the application executes less code. Whenever possible use vectorized library functions instead of loops.&lt;br&gt;
Python is successful in data science because of the pre-compiled code offered by data-appropriate libraries in the pydata stack such as &lt;a href="https://pandas.pydata.org/"&gt;pandas&lt;/a&gt; and &lt;a href="https://numpy.org/"&gt;numpy&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Adding parallelism:&lt;/strong&gt; You can achieve parallelism on a single machine or by using multiple machines. In principle, you want to stay on a single machine as much as possible as distributed computing increased complexity because of the following challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;network transfer&lt;/li&gt;
&lt;li&gt;task management&lt;/li&gt;
&lt;li&gt;cluster management&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2a. &lt;strong&gt;Hardware accelerators:&lt;/strong&gt; You can leverage GPUs and &lt;br&gt;
  TPUs for your ML workflows. Libraries such as CuPy and &lt;br&gt;
  RAPIDS leverage GPUs. There are non-GPU accelerators also &lt;br&gt;
  like &lt;a href="https://cloud.google.com/tpu/docs/tpus"&gt;TPUs offered by Google&lt;/a&gt; and &lt;a href="https://developer.apple.com/machine-learning/core-ml/"&gt;Apple Neural Engine&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;2b. &lt;strong&gt;Distributed Computing:&lt;/strong&gt; Going distributed is much &lt;br&gt;
  harder for the aforementioned reasons but if you have to &lt;br&gt;
  then you can look at the following projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dask.org/"&gt;Dask&lt;/a&gt;: Distributed data frames, machine learning and more&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ray.io/ray-core"&gt;Ray&lt;/a&gt;: Parallel python framework&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://eng.uber.com/horovod/"&gt;Horovod&lt;/a&gt;: Uber's framework for distributed deep learning&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://spark.apache.org/docs/latest/api/python/index.html"&gt;PySpark&lt;/a&gt;: Python wrapper for Apache Spark ecosystem&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whichever direction you take on your scaling journey, be sure to pause before you commit, and solve one problem at a time.&lt;/p&gt;

&lt;p&gt;P.S. I'll cover I/O bottlenecks in a separate post.&lt;/p&gt;

</description>
      <category>python</category>
      <category>machinelearning</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Covid-19 India Dashboard</title>
      <dc:creator>Abhishek Sharma</dc:creator>
      <pubDate>Wed, 22 Apr 2020 12:19:21 +0000</pubDate>
      <link>https://dev.to/alephthoughts/covid-19-india-dashboard-3b80</link>
      <guid>https://dev.to/alephthoughts/covid-19-india-dashboard-3b80</guid>
      <description>&lt;p&gt;I have created some D3 charts on Covid-19 data and updating them regularly. See them here &lt;a href="https://alephthoughts.com/covid-19/"&gt;https://alephthoughts.com/covid-19/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_eZ23L36--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qo67cmuqpyun39r4ooom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_eZ23L36--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qo67cmuqpyun39r4ooom.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>d3</category>
    </item>
    <item>
      <title>BeautifulText - Stylized Outputs in Jupyter Notebook </title>
      <dc:creator>Abhishek Sharma</dc:creator>
      <pubDate>Tue, 01 Oct 2019 10:04:19 +0000</pubDate>
      <link>https://dev.to/alephthoughts/beautifultext-stylized-outputs-in-jupyter-notebook-271h</link>
      <guid>https://dev.to/alephthoughts/beautifultext-stylized-outputs-in-jupyter-notebook-271h</guid>
      <description>&lt;p&gt;A neat Jupyter trick is to be able to print markdown texts in your notebook. I have created a simple python module to generate beautiful text within the notebook.&lt;br&gt;
Get the python script from Git &lt;a href="https://github.com/alephthoughts/BeautifulText"&gt;here&lt;/a&gt;.&lt;br&gt;
Look at this Kaggle kernel for &lt;a href="https://www.kaggle.com/abhisheksharma09/beautiful-text-utility-demo"&gt;demo&lt;/a&gt;. &lt;/p&gt;

</description>
      <category>python</category>
      <category>jupyter</category>
    </item>
    <item>
      <title>How do you overcome the feeling of not being as cool as the other DEVs?</title>
      <dc:creator>Abhishek Sharma</dc:creator>
      <pubDate>Wed, 03 Jul 2019 13:39:08 +0000</pubDate>
      <link>https://dev.to/alephthoughts/how-do-you-overcome-the-feeling-of-not-being-as-cool-as-other-devs-1e7f</link>
      <guid>https://dev.to/alephthoughts/how-do-you-overcome-the-feeling-of-not-being-as-cool-as-other-devs-1e7f</guid>
      <description></description>
      <category>discuss</category>
      <category>beginners</category>
      <category>advice</category>
      <category>dev</category>
    </item>
    <item>
      <title>Publication ready Jupyter Notebooks</title>
      <dc:creator>Abhishek Sharma</dc:creator>
      <pubDate>Sat, 15 Jun 2019 16:35:35 +0000</pubDate>
      <link>https://dev.to/alephthoughts/publication-ready-jupyter-notebooks-47ca</link>
      <guid>https://dev.to/alephthoughts/publication-ready-jupyter-notebooks-47ca</guid>
      <description>&lt;p&gt;Documenting your work is an integral part of your development but if you are someone like me and you have to share your work with different set of technical and non-technical audience, you probably go an extra mile to create separate versions of the same results, one with code for your peers, and one for the business stakeholders who may find the code scary or distracting to say the least. &lt;a href="https://jupyter.org/"&gt;The Jupyter Notebook&lt;/a&gt; makes my life so much easier for the data analysis related work. Although jupyter notebook supports a variety of programming languages like &lt;a href="https://julialang.org/"&gt;Julia&lt;/a&gt;, &lt;a href="python.org"&gt;Python&lt;/a&gt; and &lt;a href="https://www.r-project.org/"&gt;R&lt;/a&gt; for live code and visualisations, alongwith &lt;a href="https://en.wikipedia.org/wiki/Markdown"&gt;Markdown&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/HTML"&gt;HTML&lt;/a&gt; and others for narrative text, in this post, we will see an example with python code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing Required Packages
&lt;/h3&gt;

&lt;p&gt;Assuming you already have jupyter and python installed on your systems, you need to install the following packages additionally:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://github.com/jupyter/nbconvert"&gt;nbconvert&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The nbconvert tools utilises &lt;a href="http://jinja.pocoo.org/"&gt;Jinja&lt;/a&gt; templates to convert your jupyter notebooks to various document formats such as HTML, LaTeX, PDF, Reveal JS, Markdown, ReStructured Text (rst) and executable script.&lt;br&gt;
You can install nbconvert using either of the commands depending on your python package manager:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install nbconvert&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;conda install -c anaconda nbconvert&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To convert the notebook to the desired output format use the following command structure:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ jupyter nbconvert --to &amp;lt;output format&amp;gt; &amp;lt;input notebook&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://github.com/kirbs-/hide_code"&gt;Hide_Code&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Hide_Code is an extension for your jupyter notebook, which allows you to selectively hide code, prompts and outputs in the jupyter notebook. It also enables these notebooks to be exported to HTML, LaTeX and PDF. Once hide_code is installed on your system, you can enable it by clicking View -&amp;gt; Cell Toolbar -&amp;gt; Hide Code on your jupyter notebook menu.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1cBMLKV3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/merjlhy2nzq3i26wc2bd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1cBMLKV3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/merjlhy2nzq3i26wc2bd.gif" alt="Hide_Code Demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can install hide_code using following commands:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install hide_code&lt;/code&gt;&lt;br&gt;
&lt;code&gt;jupyter nbextension install --py hide_code&lt;/code&gt;&lt;br&gt;
&lt;code&gt;jupyter nbextension enable --py hide_code&lt;/code&gt;&lt;br&gt;
&lt;code&gt;jupyter serverextension enable --py hide_code&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can export your notebooks to desired format using the following commands:&lt;br&gt;
To HTML &lt;br&gt;&lt;br&gt;
&lt;code&gt;jupyter nbconvert --to hide_code_html notebook_to_convert.ipynb&lt;/code&gt;&lt;br&gt;&lt;br&gt;
To PDF &lt;br&gt;&lt;br&gt;
&lt;code&gt;jupyter nbconvert --to hide_code_pdf notebook_to_convert.ipynb&lt;/code&gt;&lt;br&gt;&lt;br&gt;
To LaTex&lt;br&gt;&lt;br&gt;
&lt;code&gt;jupyter nbconvert --to hide_code_latexpdf notebook_to_convert.ipynb&lt;/code&gt;&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://bitbucket.org/astanin/python-tabulate/src/master/"&gt;Tabulate&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Tabulate is a python package used for pretty printing tabular data in python.&lt;br&gt;
You can install tabulate using either of the following commands:&lt;br&gt;
&lt;code&gt;pip install tabulate&lt;/code&gt;&lt;br&gt;
&lt;code&gt;conda install -c conda-forge tabulate&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating the notebook
&lt;/h3&gt;

&lt;p&gt;I have created a &lt;a href="https://github.com/alephthoughts/JupyterPublishDemo"&gt;demo notebook&lt;/a&gt; on github which you can fork or download or work with your own example. &lt;/p&gt;

&lt;h4&gt;
  
  
  Writing Narrative Text
&lt;/h4&gt;

&lt;p&gt;In order to write the narrative text in Markdown or HTML, click on "Cell -&amp;gt; Cell Type -&amp;gt; Markdown" on jupyter menu or press "Esc + m" on your keyboard. This &lt;a href="https://www.markdowntutorial.com/"&gt;tutorial&lt;/a&gt; gives a good introduction on markdown.&lt;/p&gt;

&lt;h4&gt;
  
  
  Enable Hide_Code
&lt;/h4&gt;

&lt;p&gt;Enable Hide_Code which gives you options to "Hide Prompt", "Hide Code" and "Hide Cell" on the top right corner of each cell in the notebook. Using the following command convert your notebook to LaTeX format.&lt;br&gt;
&lt;code&gt;jupyter nbconvert --to hide_code_latex notebook_to_convert.ipynb&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Adding colors to your LaTeX file
&lt;/h4&gt;

&lt;p&gt;By default the export is black and white.You can add color to your latex element by using the following command:&lt;br&gt;&lt;br&gt;
&lt;code&gt;{\color{&amp;lt;color name&amp;gt;}&amp;lt;element text&amp;gt;}&lt;/code&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;You can color entire sections using the following global definitions: &lt;br&gt;&lt;br&gt;
&lt;code&gt;\usepackage{sectsty}&lt;/code&gt;&lt;br&gt;
&lt;code&gt;\chapterfont{\color{brown}}&lt;/code&gt;&lt;br&gt;
&lt;code&gt;\sectionfont{\color{brown}}&lt;/code&gt;&lt;br&gt;
&lt;code&gt;\subsectionfont{\color{brown}}&lt;/code&gt;&lt;br&gt;
&lt;code&gt;\subsubsectionfont{\color{teal}}&lt;/code&gt;&lt;br&gt;
&lt;code&gt;\date{\color{brown}June 10, 2019}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can deep dive into &lt;a href="https://www.latex-tutorial.com/tutorials/?ref=hackr.io"&gt;LaTeX&lt;/a&gt; if you want to customize it completely. &lt;br&gt;&lt;br&gt;
This brings us to the end of this post. Hope you will find it useful!&lt;br&gt;
This post was originally published on &lt;a href="http://alephthoughts.com/2019-06-15-jupyterNB/"&gt;Alephthoughts&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>dev</category>
      <category>datascience</category>
      <category>jupyter</category>
      <category>python</category>
    </item>
  </channel>
</rss>
