Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन पंडों में एक टेम्पलेट का उपयोग करके डेटाफ़्रेम में नई पंक्तियों को कैसे जोड़ा जाए

पायथन पांडा में टेम्पलेट का उपयोग करके डेटाफ़्रेम में नई पंक्तियों को कैसे जोड़ें।

परिचय

डेटा इंजीनियरिंग विशेषज्ञ होने के नाते, मैं अक्सर पंक्तियों की तुलना में अधिक व्युत्पन्न कॉलम बनाता हूं क्योंकि विश्लेषण के लिए मुझे डेटा बनाने और भेजने की भूमिका अन्य डेटाबेस विशेषज्ञों का ध्यान रखना चाहिए। हालांकि, यह हर समय सच नहीं होता है।

हमें डेटा विशेषज्ञ टीम द्वारा हमें डेटा भेजने की प्रतीक्षा करने के बजाय नमूना पंक्तियाँ बनानी होंगी। इस विषय में मैं पंक्तियाँ बनाने के लिए साफ-सुथरी तरकीबें दिखाऊंगा।

इसे कैसे करें..

इस रेसिपी में, हम .loc विशेषता के साथ एक छोटे डेटासेट में पंक्तियों को जोड़कर शुरू करेंगे और फिर .append विधि का उपयोग करेंगे।

1.आइए हम बाद में पंक्तियों को जोड़ने के लिए डेटाफ़्रेम बनाकर शुरू करते हैं।

उदाहरण

import pandas as pd
import numpy as np

players_info = pd.DataFrame(data=[
{"players": "Roger Federer", "titles": 20},
{"players": "Rafael Nadal", "titles": 20},
{"players": "Novak Djokovic", "titles": 17},
{"players": "Andy Murray", "titles": 3}], columns=["players", "titles"])

आउटपुट

print(players_info.info())

उदाहरण

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 players 4 non-null object
1 titles 4 non-null int64
dtypes: int64(1), object(1)
memory usage: 192.0+ bytes
None

1. अब आइए .loc विशेषता का उपयोग करके डेटाफ़्रेम में नया खिलाड़ी "Dominic Theim" जोड़ें।

new_Player = ['Dominic Theim', 1]
players_info.loc[4] = new_Player

आउटपुट

print(players_info)


players titles
0 Roger Federer 20
1 Rafael Nadal 20
2 Novak Djokovic 17
3 Andy Murray 3
4 Dominic Theim 1

1. उसी .loc विशेषता का उपयोग करके, हम डेटाफ़्रेम के अंत में नई पंक्ति जोड़ते हैं। यहां मैं दिखाऊंगा कि डेटाफ़्रेम में शब्दकोश कैसे जोड़ा जाता है।

new_player = {'players': 'Daniel Medvedev', 'titles': 0}
players_info.loc[len(players_info)] = new_player

आउटपुट

print(players_info)


players titles
0 Roger Federer 20
1 Rafael Nadal 20
2 Novak Djokovic 17
3 Andy Murray 3
4 Dominic Theim 1
5 Daniel Medvedev 0

1. हम डेटाफ़्रेम में पांडा सीरीज़ होल्डिंग डेटा भी जोड़ सकते हैं।

players_info.loc[len(players_info)] = pd.Series({'players': 'Andy Zverev', 'titles': 0})

आउटपुट

print(players_info)
players titles
0 Roger Federer 20
1 Rafael Nadal 20
2 Novak Djokovic 17
3 Andy Murray 3
4 Dominic Theim 1
5 Daniel Medvedev 0
6 Andy Zverev 0

निष्कर्ष

हमने .loc पद्धति का उपयोग करके उपरोक्त 4 चरणों में डेटा जोड़ा है। .loc विशेषता डेटाफ़्रेम में यथास्थान परिवर्तन करती है।

अगले कुछ चरणों में, हम .append पद्धति को देखेंगे, जो कॉलिंग डेटाफ़्रेम को संशोधित नहीं करती है, बल्कि यह संलग्न पंक्तियों के साथ डेटाफ़्रेम की एक नई प्रति लौटाती है।

.append का पहला तर्क या तो कोई अन्य DataFrame, Series, Dictionary या एक सूची होना चाहिए।

उदाहरण

# Create a DataFrame with index
players_info = pd.DataFrame(data=[
{"players": "Roger Federer", "titles": 20},
{"players": "Rafael Nadal", "titles": 20},
{"players": "Novak Djokovic", "titles": 17},
{"players": "Andy Murray", "titles": 3}], columns=["players", "titles"],
index=["roger", "nadal", "djokovic", "murray"])


# Add a new row(dictionary) to DataFrame using .append method.
players_info.append({'players': 'Daniel Medvedev', 'titles': 0})
का उपयोग करके DataFrame में एक नई पंक्ति (शब्दकोश) जोड़ें।


---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in
1 # Add a new row(dictionary) to DataFrame using .append method.
----> 2 players_info.append({'players': 'Daniel Medvedev', 'titles': 0})

~\anaconda3\lib\site-packages\pandas\core\frame.py in append(self, other, ignore_index, verify_integrity, sort)
7046 other = Series(other)
7047 if other.name is None and not ignore_index:
-> 7048 raise TypeError(
7049 "Can only append a Series if ignore_index=True "
7050 "or if the Series has a name"

TypeError केवल एक सीरीज को जोड़ सकता है अगर इग्नोर_इंडेक्स=ट्रू या सीरीज का कोई नाम हो

जब मैंने एक शब्दकोश जोड़ने की कोशिश की, तो उसने एक अपवाद उठाया जो हमें पैरामीटर का उपयोग करने के लिए कह रहा है Ignore_index=True. तो मुझे यह सुझाया गया पैरामीटर जोड़ने दें और देखें कि यह क्या करता है।

new_df = players_info.append({'players': 'Daniel Medvedev', 'titles': 0}, ignore_index=True)

आउटपुट

print(f" *** Original with index \n {players_info} \n\n\n *** Modified index \n {new_df}")


*** Original with index
players titles
roger Roger Federer 20
nadal Rafael Nadal 20
djokovic Novak Djokovic 17
murray Andy Murray 3

*** Modified index
players titles
0 Roger Federer 20
1 Rafael Nadal 20
2 Novak Djokovic 17
3 Andy Murray 3
4 Daniel Medvedev 0

मैंने इग्नोर_इंडेक्स =ट्रू पैरामीटर का उपयोग करने के बाद आउटपुट से क्या देखा? हां, जब इग्नोर_इंडेक्स को ट्रू पर सेट किया जाता है, तो पुराने इंडेक्स को पूरी तरह से हटा दिया जाएगा और इसे 0 से n-1 तक रेंजइंडेक्स से बदल दिया जाएगा।

जब आप डेटाफ़्रेम में एक ही बार में कई पंक्तियाँ जोड़ना चाहते हैं तो .append विधि काफी उपयोगी होती है।

player1 = pd.Series({'players': 'Andy Zverev', 'titles': 0}, name='zverev')
player2 = pd.Series({'players': 'Dominic Theim', 'titles': 1}, name='theim')
new_df_1 = players_info.append([player1, player2])

आउटपुट

print(new_df_1)
players titles
roger Roger Federer 20
nadal Rafael Nadal 20
djokovic Novak Djokovic 17
murray Andy Murray 3
zverev Andy Zverev 0
theim Dominic Theim 1

ठीक है, अब जब आपने पंक्तियों को जोड़ने के बारे में मूलभूत बातें देख ली हैं, तो हम कई स्तंभों वाले डेटाफ़्रेम पर पंक्तियों को जोड़ने के तरीके के बारे में जानेंगे।

df = pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")

आउटपुट

print(df.info())

उदाहरण

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4803 entries, 0 to 4802
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 budget 4803 non-null int64
1 id 4803 non-null int64
2 original_language 4803 non-null object
3 original_title 4803 non-null object
4 popularity 4803 non-null float64
5 release_date 4802 non-null object
6 revenue 4803 non-null int64
7 runtime 4801 non-null float64
8 status 4803 non-null object
9 title 4803 non-null object
10 vote_average 4803 non-null float64
11 vote_count 4803 non-null int64
dtypes: float64(3), int64(4), object(5)
memory usage: 450.4+ KB
None

Google के इस डेटासेट में 12 कॉलम हैं और यदि आप मैन्युअल रूप से डेटा की नई पंक्तियों में प्रवेश कर रहे थे तो कॉलम नाम को गलत टाइप करना या एक को पूरी तरह से भूल जाना बहुत आसान है। तो हम इस समस्या से कैसे बच सकते हैं? वैसे एक तरीका है, बस कॉलम नामों का एक टेम्प्लेट बनाएं।

columns_dictionary = df.iloc[0].to_dict()
##### Output:


print(columns_dictionary)


{'budget': 237000000, 'id': 19995, 'original_language': 'en', 'original_title': 'Avatar', 'popularity': 150.437577, 'release_date': '10/12/2009', 'revenue': 2787965087, 'runtime': 162.0, 'status': 'Released', 'title': 'Avatar', 'vote_average': 7.2, 'vote_count': 11800}

तो, अब आप समझ सकते हैं कि हमने पहली पंक्ति ले ली है और इसे एक शब्दकोश में बदल दिया है। ठीक है, हमें कॉलम और मान भी मिल गए हैं, आइए अब पुराने मानों को एक डिक्शनरी समझ के साथ साफ़ करें जो किसी भी पिछले स्ट्रिंग मान को खाली स्ट्रिंग के रूप में निर्दिष्ट करता है। और अन्य सभी अनुपलब्ध मान के रूप में।

यह शब्दकोश अब किसी भी नए डेटा के लिए एक टेम्पलेट के रूप में काम कर सकता है जिसे आप दर्ज करना चाहते हैं।

उदाहरण

import datetime

new_data_dict = {}
for a, b in columns_dictionary.items():
if isinstance(b, str):
new_data_dict[a] = np.random.choice(list('abcde'))
elif isinstance(b, datetime.date):
new_data_dict[a] = np.nan
else:
new_data_dict[a] = np.nan

आउटपुट

print(new_data_dict)


{'budget': nan, 'id': nan, 'original_language': 'e', 'original_title': 'a', 'popularity': nan, 'release_date': 'b', 'revenue': nan, 'runtime': nan, 'status': 'e', 'title': 'c', 'vote_average': nan, 'vote_count': nan}

  1. पायथन - एक CSV फ़ाइल में पांडा डेटाफ़्रेम कैसे लिखें?

    Python में CSV फ़ाइल में पांडा डेटाफ़्रेम लिखने के लिए, to_csv() . का उपयोग करें तरीका। सबसे पहले, हम सूचियों का एक शब्दकोश बनाते हैं - # dictionary of lists d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],'Date_of_pur

  1. पायथन - पंडों के डेटाफ़्रेम को वर्ष के अनुसार कैसे समूहित करें?

    हम पांडस डेटाफ़्रेम को ग्रुपबाय () का उपयोग करके समूहित करेंगे। ग्रूपर फ़ंक्शन का उपयोग करके उपयोग किए जाने वाले कॉलम का चयन करें। हम कार बिक्री रिकॉर्ड के लिए नीचे दिखाए गए उदाहरण के लिए वर्ष-वार समूहबद्ध करेंगे और वर्ष अंतराल के साथ पंजीकरण मूल्य की गणना करेंगे। सबसे पहले, मान लें कि तीन स्तंभों

  1. पायथन - पंडों के डेटाफ़्रेम से अशक्त पंक्तियों को कैसे छोड़ें?

    पंडों के डेटाफ़्रेम में अशक्त पंक्तियों को छोड़ने के लिए, ड्रॉपना () विधि का उपयोग करें। मान लें कि कुछ NaN यानी शून्य मानों वाली हमारी CSV फ़ाइल निम्नलिखित है - आइए read_csv() का उपयोग करके CSV फ़ाइल पढ़ें। हमारा सीएसवी डेस्कटॉप पर है - dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Ca