পান্ডসের সাথে সম্পর্ক মেট্রিক্সের গণনা এবং ভিজ্যুয়ালাইজেশন


35

আমার বেশ কয়েকটি এন্ট্রি সহ একটি পান্ডাস ডেটা ফ্রেম রয়েছে এবং আমি কিছু ধরণের স্টোরের আয়ের মধ্যে পারস্পরিক সম্পর্ক গণনা করতে চাই। আয়ের তথ্য, ক্রিয়াকলাপের ক্ষেত্রের শ্রেণিবদ্ধকরণ (থিয়েটার, কাপড়ের দোকান, খাবার ...) এবং অন্যান্য ডেটা সহ প্রচুর স্টোর রয়েছে।

আমি একটি নতুন ডেটা ফ্রেম তৈরি করার চেষ্টা করেছি এবং একই বিভাগের অন্তর্ভুক্ত সমস্ত ধরণের স্টোরের আয়ের সাথে একটি কলাম সন্নিবেশ করানোর চেষ্টা করেছি এবং ফিরে আসা ডেটা ফ্রেমটিতে কেবলমাত্র প্রথম কলাম ভরাট হয়েছে এবং বাকিটি এনএএন-তে পূর্ণ। আমি যে কোডটি ক্লান্ত করেছি:

corr = pd.DataFrame()
for at in activity:
    stores.loc[stores['Activity']==at]['income']

আমি এটি করতে চাই, তাই আমি .corr()স্টোরের বিভাগের মধ্যে পারস্পরিক সম্পর্ক ম্যাট্রিক্সটি ব্যবহার করতে পারি ।

তারপরে, আমি কীভাবে ম্যাট্রিক্স মানগুলি (-1 থেকে 1, যেহেতু আমি পিয়ারসনের পারস্পরিক সম্পর্ক ব্যবহার করতে চাই) ম্যাটপ্লোলিবের সাথে প্লট করতে পারি তা জানতে চাই।


উত্তর:


24

আমি নিম্নলিখিত উপর কিছু ধরণের নাটক প্রস্তাব:

এই উদাহরণের জন্য ইউসিআই অ্যাবালোন ডেটা ব্যবহার করা হচ্ছে ...

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

# Read file into a Pandas dataframe
from pandas import DataFrame, read_csv
f = 'https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data'
df = read_csv(f)
df=df[0:10]
df

এখানে চিত্র বর্ণনা লিখুন

সম্পর্ক সম্পর্কিত ম্যাট্রিক্স প্লটিং ফাংশন:

# সম্পর্কিত ম্যাট্রিক প্লটিং ফাংশন

def correlation_matrix(df):
    from matplotlib import pyplot as plt
    from matplotlib import cm as cm

    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    cmap = cm.get_cmap('jet', 30)
    cax = ax1.imshow(df.corr(), interpolation="nearest", cmap=cmap)
    ax1.grid(True)
    plt.title('Abalone Feature Correlation')
    labels=['Sex','Length','Diam','Height','Whole','Shucked','Viscera','Shell','Rings',]
    ax1.set_xticklabels(labels,fontsize=6)
    ax1.set_yticklabels(labels,fontsize=6)
    # Add colorbar, make sure to specify tick locations to match desired ticklabels
    fig.colorbar(cax, ticks=[.75,.8,.85,.90,.95,1])
    plt.show()

correlation_matrix(df)

এখানে চিত্র বর্ণনা লিখুন

আশাকরি এটা সাহায্য করবে!


দ্বিতীয় অংশটি সত্যিই খুব সহায়ক ছিল, তবে আমার এখনও প্রথম সমস্যা রয়েছে এবং দ্বিতীয় অংশে যাওয়ার আগে আমার এটি সমাধান করা দরকার
gdlm

কিছু অংশ ছাড়াই প্রথম অংশে আপনি কী চান তা বোঝা খুব শক্ত। আপনার যে প্রশ্নটি রয়েছে তা অন্য টুকরো চিত্রিত করতে আপনি কিছু ডেটা যুক্ত করতে পারেন? আমি বিশ্বাস করি আপনি যা উল্লেখ করেছেন তার উপর ভিত্তি করে এটাকে তুচ্ছভাবে সমাধান করা হয়েছে। আপনি যা চান এবং চান তার আগে এবং পরে ডেটাফ্রেমের 10 টি সারি লিখুন।
AN6U5

1
লাইন import numpy as npপ্রয়োজন হয় না, তাই না?
মার্টিন থোমা

1
আপনি ব্যবহার করেন না cbar, তবে আপনি কেন এটি বরাদ্দ করেন?
মার্টিন থোমা

1
@ মার্টিন থোমা - ​​আপনি ঠিক বলেছেন যে নম্পি ব্যবহার করা হয়নি। আমি ভাবছিলাম যে .cor () একটি অদ্ভুত ফাংশন তবে এটি পান্ডাস। আমি কালারবারটি ব্যবহার করি, তবে আপনি ঠিক বলেছেন যে আমার এটি সিবিআর করার প্রয়োজন হয়নি। আমি আপনার মন্তব্যের উপর ভিত্তি করে পুনরায় সম্পাদনা করেছি। ধন্যবাদ!
AN6U5

29

আরেকটি বিকল্প হ'ল সমুদ্র সৈকতে হিটম্যাপ ফাংশনটি সমবায় পরিকল্পনা করার জন্য ব্যবহার করা। এই উদাহরণটি আরএসে আইএসএলআর প্যাকেজ থেকে অটো ডেটা সেট ব্যবহার করে (আপনি যে উদাহরণটি দেখিয়েছেন তেমনই)।

import pandas.rpy.common as com
import seaborn as sns
%matplotlib inline

# load the R package ISLR
infert = com.importr("ISLR")

# load the Auto dataset
auto_df = com.load_data('Auto')

# calculate the correlation matrix
corr = auto_df.corr()

# plot the heatmap
sns.heatmap(corr, 
        xticklabels=corr.columns,
        yticklabels=corr.columns)

এখানে চিত্র বর্ণনা লিখুন

আপনি যদি আরও অভিনব হতে চান, আপনি পান্ডাস স্টাইল ব্যবহার করতে পারেন , উদাহরণস্বরূপ:

cmap = cmap=sns.diverging_palette(5, 250, as_cmap=True)

def magnify():
    return [dict(selector="th",
                 props=[("font-size", "7pt")]),
            dict(selector="td",
                 props=[('padding', "0em 0em")]),
            dict(selector="th:hover",
                 props=[("font-size", "12pt")]),
            dict(selector="tr:hover td:hover",
                 props=[('max-width', '200px'),
                        ('font-size', '12pt')])
]

corr.style.background_gradient(cmap, axis=1)\
    .set_properties(**{'max-width': '80px', 'font-size': '10pt'})\
    .set_caption("Hover to magify")\
    .set_precision(2)\
    .set_table_styles(magnify())

এখানে চিত্র বর্ণনা লিখুন


পাইথনে আর প্যাকেজটি ব্যবহার করে দেখুন। এখন প্রচুর আর ফাংশন ব্যবহার করা যেতে পারে। দুর্দান্ত
ডায়ানশেং

পান্ডা> 0.19 এর সংস্করণগুলিতে rpyমডিউলটি থাকে না । আপনার স্বতন্ত্র প্রকল্পটি ব্যবহার করা দরকার rpy2। দেখুন পান্ডাস এখান থেকে সতর্কবার্তা
n1k31t4

7

কেন কেবল এটি করবেন না:

import seaborn as sns
import pandas as pd

data = pd.read_csv('Dataset.csv')

plt.figure(figsize=(40,40)) 
# play with the figsize until the plot is big enough to plot all the columns
# of your dataset, or the way you desire it to look like otherwise

sns.heatmap(data.corr())

প্যারামিটার ব্যবহার করে আপনি রঙ প্যালেট পরিবর্তন করতে পারেন cmap:

sns.heatmap(data.corr(), cmap='BuGn')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.