Hướng dẫn heatmap from csv python

I have output nested dictionary variable called all_count_details_dictionary. Using that variable I saved data to the CSV file using the following command.

import pandas as pd
csv_path = '../results_v6/output_01.csv'
# creating pandas dataframe using concat mehtod to extract data from dictionary
df = pd.concat([pd.DataFrame(l) for l in all_count_details_dictionary],axis=1).T

# saving the dataframe to the csv file
df.to_csv(csv_path, index=True)

The output CSV file is just like as below

Hướng dẫn heatmap from csv python
The CSV file can be download using this link

So I used the following code to plot a graph

import matplotlib.pyplot as plt

def extract_csv_gen_plot(csv_path):

    length = 1503 #len(dataframe_colums_list)
    data = np.genfromtxt(csv_path, delimiter=",", skip_header=True, usecols=range(3, (length+1)))
    print(data)

    # renaming data axes
    #fig, ax = plt.subplots()
    #fig.canvas.draw()

    #labels =[item.get_text() for item in ax.get_xticklabels()]
    #labels[1] = 'testing'
    #ax.set_xticklabels(labels)

    #ax.set_xticklabels(list)
    #ax.set_yticklabels(list)
    #plt.setp(ax.get_xticklabels(), rotation = 90)


    plt.imshow(data, cmap='hot',interpolation='nearest')
    plt.show()

I tried to get the column labels and case details labels into the graph axes, but it doesn't work out. Can anyone please tell me there is any other best method to plot this table into a heat map than this?

Thank you!

You can use .set_index('Row Labels) to ensure your Row Labels column is interpreted as an axis for the heatmap and transpose your DataFrame with .T so that you get the time along the x-axis and the detectors for the y-axis.

sns.heatmap(df.set_index('Row Labels').T)

Mở đầu

Chào mọi người, hôm nay mình sẽ hướng dẫn cho các bạn chỉ cần sử dụng một dòng code có thể show ra được hết các đặc điểm của tập dữ liệu dưới dạng DataFrame mà bạn có. Thật là khó tin đúng không nào? Mình cũng thấy vậy cho đến khi dùng để trực quan hóa và phân tích dữ liệu titanic. Thôi, không dài dòng nữa cùng thử thôi nào?

Pandas

Pandas đã quá quen thuộc với chúng ta khi thực hiện trực quan hóa dữ liệu dưới dạng bảng rồi nhỉ? Pandas là một trong những package cực kì hữu ích để xử lý những dữ liệu dạng DataFrame cực kì nhanh chóng. Nếu như bạn chưa dùng package này bao giờ thì hãy thử cài đặt và làm quen với nó để biết được package này kì diệu như thế nào nhé, bạn sẽ không bao giờ thất vọng đâu =))).

Cài đặt pandas cho những bạn nào chưa từng sử dụng:

pip install pandas

Khi cài đặt xong thì học và sử dụng thôi. Mọi người có thể tham khảo và học Pandas qua tutorial này

Mình sẽ sử dụng Pandas để đọc và xem qua dữ liệu như sau đây:

import pandas as pd
train = pd.read_csv('train.csv')
train.head()

Hướng dẫn heatmap from csv python
Hình 1: Đọc dữ liệu với Pandas

Như bình thường, hoặc như bài viết này của mình viết về cách visualize dữ liệu mình đều sử dụng pandas hoặc matplotlib, plotly tuy nhiên những việc đó thường cực kì tốn thời gian và chúng ta còn cần phải biết được rằng các trường dữ liệu có kiểu gì, hay phải lựa chọn các biểu đồ sao cho phù hợp. Ở bài viết này mình sẽ giới thiệu cho mọi người một cách chỉ cần sử dụng một dòng code có thể cho chúng ta biết cực kì nhiều về dữ liệu mà chúng ta đang có. Ví dụ như: thông tin dữ liệu, số lượng giá trị missing của các trường, kiểu dữ liệu, ... . Cùng xem xem đó là cái gì mà vi diệu vậy nha.

Pandas Profiling

Hướng dẫn heatmap from csv python
Hình 2: Overview về tập dữ liệu titanic 1

Hướng dẫn heatmap from csv python

Hình 2.1: Overview về tập dữ liệu titanic 2

Ở Hình 2 và Hình 2.1 là phần mở đầu cho chúng ta biết về tổng quan dữ liệu của mình đang có những gì, gồm những trường nào, bao nhiêu trường có giá trị missing, ...

Bạn có tin không nếu mình nói chỉ cần khoảng 2 dòng code python mình có thể tạo ra các số liệu thống kê về tập dữ liệu đang có không? Thực tế chỉ cần 1 dòng nếu không tính đến import và đọc dữ liệu đầu vào

Hướng dẫn heatmap from csv python
=)).

Đầu tiên bạn phải cài đặt đã dựa theo repo github này.

!pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip

Sau đó import vào để sử dụng :

import pandas as pd
import pandas_profiling

Tiếp theo thì cùng kiểm tra xem có phải chỉ cần một dòng code và có thể show ra được không nhé.

profile = pandas_profiling.ProfileReport(train, title='Pandas Profiling Report', explorative=True)
profile

Kết quả chúng ta thu được sẽ như hình dưới đây:

Hướng dẫn heatmap from csv python
Hình 3: kết quả

Tuy nhiên kết quả thu được dưới dạng interactive HTML nên tổng quát hơn nhiều và mình có thể kiểm tra và xem trực quan hơn thông qua việc tương tác trực tiếp với nó. Vì vậy, mình đã quay video lại cho mọi người xem được rõ hơn.

Hướng dẫn heatmap from csv python
Hướng dẫn heatmap from csv python

Trong ảnh gif ở phía trên chúng ta có thể biết tất cả các thông tin về dữ liệu mà mình có dựa vào ảnh gif đó:

  • Type inference: kiểu dữ liệu của các trường, cột trong dataframe
  • Essentials: type, giá trị unique, giá trị missing
  • Quantile statistics: đưa ra các giá trị như: mean, min, Q1, median, Q3, max, range
  • Descriptive statistic: mean, mode, std, sum, median absolute deviation, coefficient of variation, kurtosis, skewness
  • Most frequent values: giá trị xuất hiện với tần suất lớn
  • Histogram: các biểu đồ thống kê của các trường dữ liệu
  • Correlations : tương quan giữa các biến
  • Missing values: ma trận, số lượng, heatmap và dendrogram của các giá trị missing
  • Interactions: Biểu đồ kết hợp giữa các biến

Kết Luận

Thực sự mình thấy package này rất hữu ích, nhất là đối với những người mới và chưa biết phải phân tích dữ liệu như thế nào. Cảm ơn mọi người đã đọc bài viết của mình nhé, nếu cảm thấy hữu ích thì ngại gì không upvoted nhỉ

Hướng dẫn heatmap from csv python
. Và rất mong nhận được sự góp ý của mọi người ạ!

Reference

https://github.com/pandas-profiling/pandas-profiling

https://www.tutorialspoint.com/python_pandas/index.htm