`.resample()` के साथ अपसैंपलिंग और इंटरपोलेशन

Python में Time Series डेटा मैनिपुलेट करना

Stefan Jansen

Founder & Lead Data Scientist at Applied Artificial Intelligence

फ्रीक्वेंसी कन्वर्ज़न और ट्रांसफॉर्मेशन मेथड्स

  • .resample(): .groupby() जैसा

  • रीसैंपल अवधि के भीतर डेटा को समूहित कर हर समूह पर एक या कई मेथड लागू करता है

  • नई तिथि ऑफसेट से तय होती है - start, end, आदि

  • अपसैंपलिंग: मौजूदा से भरें या मान इंटरपोलेट करें

  • डाउनसैंपलिंग: मौजूदा डेटा पर एग्रीगेशन लागू करें

Python में Time Series डेटा मैनिपुलेट करना

शुरुआत: मासिक बेरोजगारी दर

unrate = pd.read_csv('unrate.csv', parse_dates['Date'], index_col='Date')

unrate.info()
DatetimeIndex: 208 entries, 2000-01-01 to 2017-04-01
Data columns (total 1 columns):
UNRATE    208 non-null float64 # no frequency information
dtypes: float64(1)
unrate.head()
            UNRATE
DATE
2000-01-01     4.0
2000-02-01     4.1
2000-03-01     4.0
2000-04-01     3.8
2000-05-01     4.0
  • रिपोर्टिंग तिथि: महीने की 1 तारीख
Python में Time Series डेटा मैनिपुलेट करना

रीसैंपलिंग अवधि और फ्रीक्वेंसी ऑफसेट्स

  • Resample फ्रीक्वेंसी ऑफसेट के लिए नई तिथि बनाता है
  • कैलेंडर महीने के अंत के कई विकल्प

 

फ्रीक्वेंसी उपनाम सैंपल तिथि
कैलेंडर मंथ एंड M 2017-04-30
कैलेंडर मंथ स्टार्ट MS 2017-04-01
बिज़नेस मंथ एंड BM 2017-04-28
बिज़नेस मंथ स्टार्ट BMS 2017-04-03
Python में Time Series डेटा मैनिपुलेट करना

रीसैंपलिंग लॉजिक

रीसैंपलिंग और इंटरपोलेशन.015

Python में Time Series डेटा मैनिपुलेट करना

रीसैंपलिंग लॉजिक

रीसैंपलिंग और इंटरपोलेशन.016

Python में Time Series डेटा मैनिपुलेट करना

`.resample()` से फ्रीक्वेंसी असाइन करें

unrate.asfreq('MS').info()
DatetimeIndex: 208 entries, 2000-01-01 to 2017-04-01
Freq: MS
Data columns (total 1 columns):
UNRATE    208 non-null float64
dtypes: float64(1)
unrate.resample('MS') # creates Resampler object
DatetimeIndexResampler [freq=<MonthBegin>, axis=0, closed=left, 
                        label=left, convention=start, base=0]
Python में Time Series डेटा मैनिपुलेट करना

`.resample()` से फ्रीक्वेंसी असाइन करें

unrate.asfreq('MS').equals(unrate.resample('MS').asfreq())
True
  • .resample(): केवल दूसरी मेथड कॉल करने पर डेटा देता है
Python में Time Series डेटा मैनिपुलेट करना

त्रैमासिक वास्तविक GDP वृद्धि

gdp = pd.read_csv('gdp.csv')

gdp.info()
DatetimeIndex: 69 entries, 2000-01-01 to 2017-01-01
Data columns (total 1 columns):
gpd    69 non-null float64 # no frequency info
dtypes: float64(1)
gdp.head(2)
            gpd
DATE
2000-01-01  1.2
2000-04-01  7.8
Python में Time Series डेटा मैनिपुलेट करना

मासिक वास्तविक GDP वृद्धि का इंटरपोलेशन

gdp_1 = gdp.resample('MS').ffill().add_suffix('_ffill')
       gpd_ffill
DATE
2000-01-01  1.2
2000-02-01  1.2
2000-03-01  1.2
2000-04-01  7.8
Python में Time Series डेटा मैनिपुलेट करना

मासिक वास्तविक GDP वृद्धि का इंटरपोलेशन

gdp_2 = gdp.resample('MS').interpolate().add_suffix('_inter')
            gpd_inter
DATE
2000-01-01  1.200000
2000-02-01  3.400000
2000-03-01  5.600000
2000-04-01  7.800000
  • .interpolate(): मौजूदा डेटा के बीच सीधी रेखा पर बिंदु ढूँढता है
Python में Time Series डेटा मैनिपुलेट करना

दो DataFrames को कंसकैटिनेट करना

df1 = pd.DataFrame([1, 2, 3], columns=['df1'])

df2 = pd.DataFrame([4, 5, 6], columns=['df2'])
pd.concat([df1, df2])
   df1  df2
0  1.0  NaN
1  2.0  NaN
2  3.0  NaN
0  NaN  4.0
1  NaN  5.0
2  NaN  6.0
Python में Time Series डेटा मैनिपुलेट करना

दो DataFrames को कंसकैटिनेट करना

pd.concat([df1, df2], axis=1)
   df1  df2
0    1    4
1    2    5
2    3    6
  • axis=1: क्षैतिज रूप से कंसकैटिनेट करें
Python में Time Series डेटा मैनिपुलेट करना

इंटरपोलेटेड वास्तविक GDP वृद्धि का प्लॉट करें

pd.concat([gdp_1, gdp_2], axis=1).loc['2015':].plot()

रीसैंपलिंग और इंटरपोलेशन.032

Python में Time Series डेटा मैनिपुलेट करना

GDP वृद्धि और बेरोजगारी को मिलाएँ

pd.concat([unrate, gdp_inter], axis=1).plot();

रीसैंपलिंग और इंटरपोलेशन.034

Python में Time Series डेटा मैनिपुलेट करना

अभ्यास करते हैं!

Python में Time Series डेटा मैनिपुलेट करना

Preparing Video For Download...