Sign inGet started
← Back to all guides

How to analyze data from QuickBooks in Python using Deepnote

By Filip Žitný

Updated on August 13, 2024

QuickBooks is a popular accounting software used by small and medium-sized businesses to manage their finances. As a data professional, you might find yourself needing to analyze financial data from QuickBooks to extract insights, generate reports, or build predictive models. Python, with its rich ecosystem of libraries, provides powerful tools for data analysis. Deepnote, a collaborative data science notebook, offers an interactive environment to perform these analyses efficiently.

This guide will walk you through the process of analyzing QuickBooks data using Python in Deepnote, catering to data scientists, data engineers, and data analysts. We'll cover data extraction, transformation, analysis, and visualization.

Prerequisites

Before we start, ensure you have the following:

  1. Deepnote account: sign up for a free account on Deepnote.
  2. QuickBooks account: you need access to a QuickBooks account and its API to extract data.
  3. Python knowledge: basic understanding of Python and data analysis libraries like Pandas, NumPy, and Matplotlib.

Connecting to QuickBooks API

The first step in analyzing QuickBooks data is to extract it using the QuickBooks API. Here’s how you can do it:

Setting up OAuth 2.0 authentication

QuickBooks uses OAuth 2.0 for authentication. You will need to create an app in the QuickBooks Developer Portal to get your client ID and client secret.

  • Create a new app and select the necessary scopes (e.g., Accounting).
  • Note down the client ID, client secret, and redirect URI.

Python QuickBooks library

You can use the quickbooks-python package to interact with the QuickBooks API. Install it in your Deepnote environment:

!pip install python-quickbooks

Authenticating and connecting

Here’s a basic example to authenticate and connect to the QuickBooks API

from intuitlib.client import AuthClient
from quickbooks import QuickBooks
from quickbooks.objects.customer import Customer

auth_client = AuthClient(
    client_id='YOUR_CLIENT_ID',
    client_secret='YOUR_CLIENT_SECRET',
    environment='sandbox',
    redirect_uri='YOUR_REDIRECT_URI'
)

# Redirect the user to the auth_url to get the authorization code
auth_url = auth_client.get_authorization_url(scopes=['com.intuit.quickbooks.accounting'])
print(auth_url)

# After the user has authorized, get the access_token using the code provided by QuickBooks
access_token = auth_client.get_bearer_token('YOUR_AUTH_CODE')

qb_client = QuickBooks(
    auth_client=auth_client,
    refresh_token=auth_client.refresh_token,
    company_id='YOUR_COMPANY_ID'
)

Extracting data

Once connected, you can extract various data types from QuickBooks, such as Customers, Invoices, Payments, etc.

Extracting customer data

customers = Customer.all(qb=qb_client)
customer_data = [{'Name': cust.DisplayName, 'Balance': cust.Balance} for cust in customers]

Extracting invoices

from quickbooks.objects.invoice import Invoice

invoices = Invoice.all(qb=qb_client)
invoice_data = [{'Invoice Number': inv.DocNumber, 'Total Amount': inv.TotalAmt} for inv in invoices]

Data transformation

Now that we have the raw data, the next step is to clean and transform it for analysis.

Loading data into Pandas data frame

import pandas as pd

df_customers = pd.DataFrame(customer_data)
df_invoices = pd.DataFrame(invoice_data)

Data cleaning

For effective analysis, you might need to handle missing values, convert data types, or normalize data

# Handling missing values
df_customers.fillna(0, inplace=True)

# Converting data types
df_invoices['Total Amount'] = df_invoices['Total Amount'].astype(float)

Data aggregation

You can aggregate data to get insights like total sales, average balance, etc.

total_sales = df_invoices['Total Amount'].sum()
average_balance = df_customers['Balance'].mean()

Data analysis

With the cleaned and transformed data, you can now perform various analyses.

Descriptive statistics

print(df_customers.describe())
print(df_invoices.describe())

Correlation analysis

You might want to find correlations between different variables

correlation_matrix = df_invoices.corr()
print(correlation_matrix)

Data visualization

Visualizations help in better understanding the data and communicating insights.

Basic plots

Using Matplotlib or Seaborn for visualizations

import matplotlib.pyplot as plt
import seaborn as sns

# Customer balance distribution
plt.figure(figsize=(10, 6))
sns.histplot(df_customers['Balance'], bins=20, kde=True)
plt.title('Customer Balance Distribution')
plt.show()

# Invoice amounts over time
plt.figure(figsize=(12, 8))
sns.lineplot(x='Date', y='Total Amount', data=df_invoices)
plt.title('Invoice Amounts Over Time')
plt.show()

Advanced visualizations

You can also use advanced visualizations like heatmaps or interactive plots

# Correlation heatmap
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Invoice Data Correlation Matrix')
plt.show()

Automating reports

Deepnote allows you to automate the execution of your notebooks, making it easier to generate regular reports.

Scheduling notebook runs

You can schedule your notebook to run at specific intervals in Deepnote:

  • Go to the Schedule tab in Deepnote.
  • Set the desired frequency (e.g., daily, weekly).
  • Choose the notebooks you want to automate.

Conclusion

Analyzing QuickBooks data using Python in Deepnote allows data professionals to harness the power of both worlds: QuickBooks’ robust financial data and Python’s advanced analytics capabilities. Whether you're a data scientist building predictive models, a data engineer automating data pipelines, or a data analyst generating reports, this guide provides a comprehensive pathway to get started.

By following the steps outlined in this guide, you can efficiently extract, transform, and analyze QuickBooks data, unlocking valuable insights for your business or clients. With the collaborative environment of Deepnote, you can also share your findings and workflows with your team, making data-driven decisions more accessible and impactful.

Filip Žitný

Data Scientist

Follow Filip on Twitter, LinkedIn and GitHub

That’s it, time to try Deepnote

Get started – it’s free
Book a demo

Footer

Solutions

  • Notebook
  • Data apps
  • Machine learning
  • Data teams

Product

Company

Comparisons

Resources

  • Privacy
  • Terms

© Deepnote