परिचय
डेटा इंजीनियरिंग स्पेशलिस्ट होने के नाते, मैं अक्सर पंक्तियों की तुलना में अधिक डेराइव्ड कॉलम बनाने में लगा रहता हूं क्योंकि डेटा बनाने और विश्लेषण के लिए मुझे भेजने की भूमिका अन्य डेटाबेस स्पेशलिस्ट्स को संभालनी चाहिए। हालांकि, यह हर समय सच नहीं है।
हमें डेटा स्पेशलिस्ट टीम द्वारा हमें डेटा भेजने का इंतजार करने के बजाय सैंपल पंक्तियाँ बनानी पड़ती हैं। इस टॉपिक में मैं पंक्तियाँ बनाने के साफ ट्रिक्स दिखाऊंगा।
कैसे करें
इस रेसिपी में, हम .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"])
2. .loc एट्रिब्यूट का उपयोग करके नया खिलाड़ी जोड़ें
new_Player = ['Dominic Theim', 1]
players_info.loc[4] = new_Player
print(players_info)
3. .loc का उपयोग करके डेटाफ्रेम के अंत में नई पंक्ति जोड़ें (डिक्शनरी के साथ)
new_player = {'players': 'Daniel Medvedev', 'titles': 0}
players_info.loc[len(players_info)] = new_player
print(players_info)
4. पैंडास सीरीज़ का उपयोग करके डेटा जोड़ें
players_info.loc[len(players_info)] = pd.Series({'players': 'Andy Zverev', 'titles': 0})
print(players_info)
निष्कर्ष: .loc एट्रिब्यूट DataFrame में स्थानांतरित परिवर्तन करता है।
.append मेथड का उपयोग करना
.append मेथड कॉलिंग DataFrame को मॉडिफाई नहीं करता, बल्कि जोड़ी गई पंक्ति/पंक्तियों के साथ DataFrame की एक नई कॉपी लौटाता है।
.append का पहला आर्गुमेंट या तो दूसरा DataFrame, Series, डिक्शनरी, या सूची होना चाहिए।
# इंडेक्स के साथ DataFrame बनाएं
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"])
# .append मेथड का उपयोग करके नई पंक्ति (डिक्शनरी) जोड़ें
players_info.append({'players': 'Daniel Medvedev', 'titles': 0})
एरर: TypeError: Can only append a Series if ignore_index=True or if the Series has a name
जब मैंने डिक्शनरी जोड़ने की कोशिश की, तो इसने एक एक्सेप्शन उठाया जिसमें 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}")
आउटपुट: जब ignore_index=True सेट होता है, तो पुराना इंडेक्स पूरी तरह से हटा दिया जाता है और 0 से n-1 तक एक RangeIndex से बदल दिया जाता है।
एक बार में कई पंक्तियाँ जोड़ना
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)
कई कॉलम वाले DataFrame में टेम्पलेट का उपयोग करके पंक्तियाँ जोड़ना
अब जब आपने पंक्तियाँ जोड़ने के बेसिक्स देख लिए हैं, तो हम देखेंगे कि कई कॉलम वाले DataFrame में पंक्तियाँ कैसे जोड़ें।
df = pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")
इस डेटासेट में 12 कॉलम हैं और मैन्युअली नई पंक्तियों का डेटा दर्ज करते समय कॉलम नाम को गलत टाइप करना या एक को पूरी तरह से भूल जाना बहुत आसान है। तो हम इस समस्या से कैसे बच सकते हैं? खैर, एक तरीका है - बस कॉलम नामों का एक टेम्पलेट बनाएं।
columns_dictionary = df.iloc[0].to_dict()
तो अब आप समझ गए होंगे कि हमने पहली पंक्ति ली और इसे डिक्शनरी में बदल दिया। ठीक है, हमें कॉलम और वैल्यूज़ दोनों मिल गए, अब पुराने वैल्यूज़ को डिक्शनरी कॉम्प्रिहेंशन के साथ क्लियर करें, किसी भी पिछले स्ट्रिंग वैल्यू को खाली स्ट्रिंग और अन्य सभी को मिसिंग वैल्यूज़ असाइन करके।
यह डिक्शनरी अब आपके द्वारा दर्ज किए जाने वाले किसी भी नए डेटा के लिए टेम्पलेट के रूप में काम कर सकती है।
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)