2016-09-13 3 views
5

मैं पायथन 3.5 का उपयोग कर रहा हूं और मैं पांडा के साथ काम कर रहा हूं। मैंने याहू वित्त से स्टॉक डेटा लोड किया है और फ़ाइलों को सीएसवी में सहेजा है। मेरे डेटाफ्रेम इस डेटा को सीएसवी से लोड करते हैं। यह मेरा DataFrameमैं पिछली पंक्ति को वर्तमान पंक्ति से पांडा डेटाफ्रेम में कैसे घटा सकता हूं और इसे प्रत्येक पंक्ति पर लागू कर सकता हूं; एक लूप का उपयोग किए बिना?

Date  Open  High  Low  Close Volume Adj Close 
1990-04-12 26.875000 26.875000 26.625 26.625  6100 250.576036 
1990-04-16 26.500000 26.750000 26.375 26.750  500 251.752449 
1990-04-17 26.750000 26.875000 26.750 26.875  2300 252.928863 
1990-04-18 26.875000 26.875000 26.500 26.625  3500 250.576036 
1990-04-19 26.500000 26.750000 26.500 26.750  700 251.752449 
1990-04-20 26.750000 26.875000 26.750 26.875  2100 252.928863 
1990-04-23 26.875000 26.875000 26.750 26.875  700 252.928863 
1990-04-24 27.000000 27.000000 26.000 26.000  2400 244.693970 
1990-04-25 25.250000 25.250000 24.875 25.125  9300 236.459076 
1990-04-26 25.000000 25.250000 24.750 25.000  1200 235.282663 

है कि मुझे पता है कि मैं iloc, loc, ix लेकिन ये मान है कि मैं सूचकांक सिर्फ अपने विशिष्ट पंक्तियों और स्तंभों दे देंगे और इच्छा का उपयोग कर सकते csv फ़ाइल के दस पंक्तियों की एक प्रति है हर पंक्ति पर ऑपरेशन नहीं करते हैं। उदाहरण के लिए: खुले कॉलम में मौजूद डेटा में से एक पंक्ति 26.875 का मान है और इसके नीचे की पंक्ति 26.50 है। कीमत गिर गई .375 सेंट। मैं पिछले दिन से बढ़ने या घटाने का% कैप्चर करने में सक्षम होना चाहता हूं ताकि इस उदाहरण को समाप्त किया जा सके .375 26.875 = 1.4% एक दिन से अगले दिन तक विभाजित हो गया। मैं हर पंक्ति पर इस गणना को चलाने में सक्षम होना चाहता हूं, इसलिए मुझे पता है कि पिछले दिन से यह कितना बढ़ गया है या घट गया है। इंडेक्स फ़ंक्शंस मैंने कोशिश की है लेकिन वे पूर्ण हैं, और मैं एक लूप का उपयोग नहीं करना चाहता हूं। क्या कोई तरीका है कि मैं इसे ix, iloc, loc या अन्य फ़ंक्शन के साथ कर सकता हूं?

+0

किस बारे में 'df.Close.pct_change()'? – MaxU

+0

हाँ शिफ्ट काम करना चाहिए मैंने इसे अभी देखा है धन्यवाद, मैं कुछ ऐसा ढूंढ रहा हूं, मैं भी करीबी पीटीसी की कोशिश करूंगा। आपने लोगों को मेरे प्रश्न का उत्तर दिया धन्यवाद – ZacAttack

+1

शायद मैंने आपके प्रश्न को गलत समझा है, लेकिन क्या आप 'डीएफ नहीं कर सकते .iloc [1 :,:] - df.iloc [: - 1,:] 'जहां आप इसे अपने कॉलम नाम/सूचकांक के लिए समायोजित कर सकते हैं यदि आप केवल विशिष्ट कॉलम पर आवेदन करना चाहते हैं? – Andrew

उत्तर

14

आप pct_change() या/और diff() तरीकों

उपयोग कर सकते हैं

डेमो:

In [138]: df.Close.pct_change() * 100 
Out[138]: 
0   NaN 
1 0.469484 
2 0.467290 
3 -0.930233 
4 0.469484 
5 0.467290 
6 0.000000 
7 -3.255814 
8 -3.365385 
9 -0.497512 
Name: Close, dtype: float64 

In [139]: df.Close.diff() 
Out[139]: 
0  NaN 
1 0.125 
2 0.125 
3 -0.250 
4 0.125 
5 0.125 
6 0.000 
7 -0.875 
8 -0.875 
9 -0.125 
Name: Close, dtype: float64 
+0

कोड पोस्ट करने के लिए धन्यवाद, जब मैं इसे देता हूं तो मैं इसे सही उत्तर दूंगा – ZacAttack

संबंधित मुद्दे