मैं डेटा फ्रेम में मूल्य डेटा का योग खोजने की कोशिश कर रहा हूं। मेरा वर्तमान कोड इस तरह दिखता है, इसे करने का एक बेहतर तरीका होना चाहिए

i=5
a = 0
while i<10
    a = a + df.loc[i]["Price"]
    i = i + 1
averg = a/5
print(averg)
1
Ted pottel 6 अक्टूबर 2018, 14:40

3 जवाब

सबसे बढ़िया उत्तर

पहले ध्यान दें कि आपको जंजीर अनुक्रमण से बचना चाहिए। यह अस्पष्ट है और स्पष्ट रूप से हतोत्साहित में डॉक्स, और इसके बजाय आप उपयोग कर सकते हैं pd.DataFrame.at. इसके अलावा, आप किसी मान को बढ़ाने के लिए += ऑपरेटर का उपयोग कर सकते हैं। तो आप इस प्रकार फिर से लिख सकते हैं:

i = 5
a = 0
while i < 10
    a += df.at[i, 'Price']
    i += 1
avg = a/5
print(avg)

हालांकि, ध्यान दें कि आप pd.DataFrame.loc< का इस्तेमाल कर सकते हैं /a> पंक्ति और अनुक्रमणिका लेबलिंग को संयोजित करने और एक pd.Series वस्तु देने के लिए। फिर आप pd.Series.mean औसत की गणना करने के लिए:

avg = df.loc[5:10, 'Price'].mean()

इस तरह आप पायथन-स्तरीय लूप का उपयोग करने के विपरीत वेक्टरकृत संगणनाओं का भी लाभ उठा रहे हैं।

0
jpp 6 अक्टूबर 2018, 12:17
>>> import pandas as pd

>>> df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=["Price", "Weight", "Size"])
>>> df
   Price  Weight  Size
0      1       2     3
1      4       5     6
2      7       8     9

>>> df.mean()
Price     4
Weight    5
Size      6
dtype: int64

>>> df["Price"].mean()
4
0
Chang Ye 6 अक्टूबर 2018, 11:46

डेटाफ़्रेम पर लूप का उपयोग करना बहुत अक्षम है। जब भी संभव हो वेक्टर गणनाओं का उपयोग करने का प्रयास करें। पांडा के पास इसके लिए पहले से ही mean() एक फ़ंक्शन है।
यदि उस कॉलम की अनुक्रमणिका "मूल्य" है तो आप निम्न कार्य कर सकते हैं -
df['Price'].mean()

0
marc_s 6 अक्टूबर 2018, 21:26