पंडों के साथ सहसंबंध मैट्रिक्स की गणना और दृश्य


35

मेरे पास कई प्रविष्टियों के साथ एक पांडा डेटा फ्रेम है, और मैं कुछ प्रकार की दुकानों की आय के बीच सहसंबंध की गणना करना चाहता हूं। आय डेटा के साथ कई स्टोर हैं, गतिविधि के क्षेत्र का वर्गीकरण (थिएटर, कपड़ा स्टोर, भोजन ...) और अन्य डेटा।

मैंने एक नया डेटा फ़्रेम बनाने और सभी प्रकार के स्टोरों की आय के साथ एक कॉलम सम्मिलित करने का प्रयास किया, जो एक ही श्रेणी के हैं, और रिटर्निंग डेटा फ़्रेम में केवल पहला कॉलम भरा है और शेष NaN से भरा है। कोड है कि मैं थक गया:

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
@ मॉर्टिन थोमा - आप सही हैं कि खसखस ​​का उपयोग नहीं किया जाता है। मैं सोच रहा था कि .corr () एक सुन्न कार्य था लेकिन यह पांडा है। मैं colorbar का उपयोग करता हूं, लेकिन आप सही हैं कि मुझे इसे cbar को असाइन करने की आवश्यकता नहीं है। मैंने आपकी टिप्पणियों के आधार पर रिपीशन संपादित किया है। धन्यवाद!
AN6U5

29

एक अन्य विकल्प कोवरियन को साजिश रचने के लिए सीबॉर्न में हीटमैप फ़ंक्शन का उपयोग करना है। यह उदाहरण R में ISLR पैकेज से ऑटो डेटा सेट का उपयोग करता है (आपके द्वारा दिखाए गए उदाहरण के समान)।

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')
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.