कोर्स
Excel की एक सीमा यह है कि यह बड़े पैमाने पर डेटा को संभालने में सक्षम नहीं है। विशेष रूप से जब आपके फ़ॉर्मूले और मैक्रो प्रदर्शन के लिए अनुकूलित नहीं होते, तो Excel में बहुत अधिक डेटा प्रविष्टियों पर जटिल ऑपरेशन करने पर आपको गंभीर प्रदर्शन संबंधी समस्याओं का सामना करना पड़ सकता है।
यदि आपको बार-बार एक जैसे कार्य करने पड़ते हैं, तो Excel बहुत समय लेने वाला भी हो सकता है। उदाहरण के लिए, यदि आपको हर सप्ताह कई Excel फ़ाइलों पर एक ही विश्लेषण दोहराना है, तो आपको उन्हें मैन्युअल रूप से खोलना होगा और बार-बार वही फ़ॉर्मूले कॉपी-पेस्ट करने होंगे।
सर्वेक्षण बताते हैं कि 93% Excel उपयोगकर्ताओं को स्प्रेडशीट्स को समेकित करना समय लेने वाला लगता है और कर्मचारी सिर्फ अलग-अलग Excel फ़ाइलों को मिलाने में हर महीने लगभग 12 घंटे खर्च करते हैं।
इन कमियों को Python के साथ Excel वर्कफ़्लो को स्वचालित करके दूर किया जा सकता है। स्प्रेडशीट समेकन, डेटा सफाई, और प्रेडिक्टिव मॉडलिंग जैसे कार्य एक सरल Python स्क्रिप्ट से, जो Excel फ़ाइल में लिखती है, कुछ ही मिनटों में किए जा सकते हैं।
Excel उपयोगकर्ता एक Python ऑटोमेशन स्क्रिप्ट भी सेट कर सकते हैं जो शेड्यूल पर चलती है, जिससे एक ही काम को बार-बार मैन्युअल रूप से करने की ज़रूरत खत्म हो जाती है।
इस लेख में, मैं आपको चरण-दर-चरण दिखाऊंगा कि कैसे:
- openpyxl का उपयोग करके Python से Excel फ़ाइलें पढ़ें और लिखें
- Python में अंकगणितीय ऑपरेशन और Excel फ़ॉर्मूले बनाएँ
- Python का उपयोग करके Excel वर्कशीट्स में हेरफेर करें
- Python में विज़ुअलाइज़ेशन बनाएँ और उन्हें Excel फ़ाइल में सहेजें
- Python का उपयोग करके Excel सेल के रंग और शैलियाँ फ़ॉर्मैट करें
संक्षेप में
-
pip install openpyxlसे openpyxl इंस्टॉल करें -
किसी भी
.xlsxफ़ाइल कोopenpyxl.load_workbook('file.xlsx')से लोड करें; शीट्स तक पहुँचेंwb.activeयाwb['SheetName']द्वारा -
सेल मान पढ़ें
ws['A1'].valueसे; पंक्तियों पर इटरेट करेंws.iter_rows(values_only=True)से -
सेल में लिखें
ws['A1'] = 'value'से और बदलाव सेव करेंwb.save('file.xlsx')से -
Python से सीधे Excel फ़ॉर्मूला, बार चार्ट, लाइन चार्ट, और कंडीशनल फॉर्मेटिंग बनाएँ—Excel खोलने की जरूरत नहीं
पूर्वापेक्षाएँ
आगे बढ़ने के लिए, आपको चाहिए:
-
आपकी मशीन पर Python 3.8 या नया संस्करण इंस्टॉल हो
-
मूल Python जानकारी (वैरिएबल, लूप, फंक्शन)
-
openpyxl इंस्टॉल हो (
pip install openpyxl) -
आउटपुट फ़ाइलें देखने के लिए कोई स्प्रेडशीट व्यूअर (Excel, Google Sheets, या LibreOffice Calc)
इस ट्यूटोरियल में प्रयुक्त वीडियो गेम सेल्स डेटासेट इस GitHub रिपोजिटरी से डाउनलोड करें।
Openpyxl का परिचय
Openpyxl एक Python लाइब्रेरी है जो उपयोगकर्ताओं को Excel फ़ाइलें पढ़ने और उन पर लिखने की सुविधा देती है।
यह फ़्रेमवर्क आपको Python में ही फ़ंक्शन लिखने, स्प्रेडशीट फॉर्मेट करने, रिपोर्ट बनाने, और चार्ट तैयार करने में मदद करता है—Excel एप्लिकेशन खोले बिना।
Openpyxl आपको वर्कशीट्स पर इटरेट करने और एक ही बार में कई डेटासेट्स पर वही विश्लेषण चलाने की सुविधा भी देता है।
इससे किसी भी संख्या की वर्कशीट्स में दोहराए जाने वाले Excel कार्यों को ऑटोमेट करना आसान हो जाता है।
Openpyxl बनाम Pandas: सही टूल कैसे चुनें
अक्सर पूछा जाता है कि Excel कार्यों के लिए openpyxl इस्तेमाल करें या pandas। जवाब इस पर निर्भर करता है कि आपको क्या करना है।
| कार्य | openpyxl | pandas |
|---|---|---|
| Excel से डेटा पढ़ना | हाँ | हाँ |
| Excel में डेटा लिखना | हाँ | हाँ (द्वारा to_excel()) |
| सेल फॉर्मेटिंग (फ़ॉन्ट, रंग, बॉर्डर) | हाँ | नहीं |
| Excel फ़ाइल के भीतर चार्ट बनाना | हाँ | नहीं |
| Excel फ़ॉर्मूलों का उपयोग | हाँ | नहीं |
| डेटा विश्लेषण और रूपांतरण | सीमित | हाँ |
| बहुत बड़ी फ़ाइलें (>100k पंक्तियाँ) | read_only=True का उपयोग करें |
डिफ़ॉल्ट रूप से अधिक मेमोरी-कुशल |
जब आपको Excel फ़ाइल की रूप-रेखा और संरचना—फॉर्मेटिंग, चार्ट, फ़ॉर्मूले—पर नियंत्रण चाहिए, तो openpyxl का उपयोग करें। जब आपको डेटा फ़िल्टर करना, एग्रीगेट करना, या रेशेप करना हो, तो pandas इस्तेमाल करें। हमारा Python pandas ट्यूटोरियल डेटा-विश्लेषण पक्ष को विस्तार से कवर करता है।
Openpyxl कैसे इंस्टॉल करें
openpyxl इंस्टॉल करने के लिए, अपना टर्मिनल या PowerShell खोलें और चलाएँ:
pip install openpyxl
आपको निम्न संदेश दिखाई देना चाहिए, जो इंगित करता है कि पैकेज सफलतापूर्वक इंस्टॉल हो गया है:

Openpyxl के साथ Python में Excel फ़ाइलें पढ़ना
हम इस ट्यूटोरियल में Kaggle का Video Game Sales डेटासेट उपयोग करेंगे। इस ट्यूटोरियल हेतु हमारी टीम द्वारा इस डेटासेट को प्रीप्रोसेस किया गया है, और आप संशोधित संस्करण इस लिंक से डाउनलोड कर सकते हैं। आप नीचे दिए गए चरणों का पालन कर Excel को Python में इम्पोर्ट कर सकते हैं:
वर्कबुक लोड करना
डेटासेट डाउनलोड करने के बाद, Openpyxl लाइब्रेरी इम्पोर्ट करें और वर्कबुक को Python में लोड करें:
import openpyxl
wb = openpyxl.load_workbook('videogamesales.xlsx')
अब जब Excel फ़ाइल एक Python ऑब्जेक्ट के रूप में लोड हो गई है, तो आपको लाइब्रेरी को बताना होगा कि किस वर्कशीट तक पहुँचना है। ऐसा करने के दो तरीके हैं:
पहला तरीका है सक्रिय वर्कशीट को कॉल करना, जो वर्कबुक में पहली शीट होती है, निम्न कोड द्वारा:
ws = wb.active
वैकल्पिक रूप से, यदि आपको वर्कशीट का नाम पता है, तो आप उसे नाम से भी एक्सेस कर सकते हैं। हम इस खंड में “vgsales” शीट का उपयोग करेंगे:
ws = wb['vgsales']
अब इस वर्कशीट में पंक्तियों और स्तंभों की संख्या गिनते हैं:
print('Total number of rows: '+str(ws.max_row)+'. And total number of columns: '+str(ws.max_column))
ऊपर दिया गया कोड निम्न आउटपुट देगा:
Total number of rows: 16328. And total number of columns: 10
अब जबकि हमें शीट के आयाम पता हैं, आगे बढ़ते हैं और सीखते हैं कि वर्कबुक से डेटा कैसे पढ़ें।
बड़ी फ़ाइलें कुशलता से पढ़ना
बहुत अधिक पंक्तियों वाली वर्कबुक्स के लिए, पूरी फ़ाइल मेमोरी में लोड होने से बचने हेतु उन्हें रीड-ओनली मोड में खोलें:
import openpyxl
wb = openpyxl.load_workbook('videogamesales.xlsx', read_only=True)
ws = wb.active
for row in ws.iter_rows(values_only=True):
print(row)
रीड-ओनली मोड में पंक्तियाँ एक-एक करके स्ट्रीम होती हैं, पूरी वर्कबुक RAM में नहीं रहती। इस तरह खोली गई वर्कबुक में आप वापस लिख नहीं सकते, इसलिए इसे बड़े डेटासेट्स पर रीड-हैवी पाइपलाइनों के लिए सुरक्षित रखें।
किसी सेल से डेटा पढ़ना
इस खंड में जिस सक्रिय शीट पर हम काम करेंगे, उसका स्क्रीनशॉट नीचे है:

Openpyxl के साथ किसी विशेष सेल से डेटा प्राप्त करने के लिए, आप इस तरह सेल का मान पढ़ सकते हैं:
print(f"The value in cell A1 is: {ws['A1'].value}")
आपको निम्न आउटपुट मिलेगा:
The value in cell A1 is: Rank
एकाधिक सेल्स से डेटा पढ़ना
अब जबकि हमें किसी विशेष सेल से डेटा पढ़ना आ गया है, मान लीजिए हम स्प्रेडशीट की किसी निश्चित पंक्ति के सभी सेल मान प्रिंट करना चाहते हैं?
इसके लिए, आप एक साधारण for लूप लिख सकते हैं जो किसी विशेष पंक्ति के सभी मानों पर इटरेट करे:
values = [ws.cell(row=1,column=i).value for i in range(1,ws.max_column+1)]
print(values)
ऊपर दिया गया कोड पहली पंक्ति के सभी मान प्रिंट करेगा:
['Rank', 'Name', 'Platform', 'Year', 'Genre', 'Publisher', 'NA_Sales', 'EU_Sales', 'JP_Sales', 'Other_Sales']
अब, किसी विशेष स्तंभ में बहु-पंक्तियाँ प्रिंट करने की कोशिश करते हैं।
हम एक for लूप बनाएँगे जो “Name” स्तंभ की पहली दस पंक्तियाँ एक सूची के रूप में रेंडर करे। हमें लाल बॉक्स में हाइलाइट किए गए नाम मिलने चाहिए:

data=[ws.cell(row=i,column=2).value for i in range(2,12)]
print(data)
ऊपर दिया गया कोड निम्न आउटपुट उत्पन्न करेगा:
['Wii Sports', 'Super Mario Bros.', 'Mario Kart Wii', 'Wii Sports Resort', 'Pokemon Red/Pokemon Blue', 'Tetris', 'New Super Mario Bros.', 'Wii Play', 'New Super Mario Bros. Wii', 'Duck Hunt']
अंत में, स्प्रेडशीट में स्तंभों की एक रेंज में पहली दस पंक्तियाँ प्रिंट करते हैं:
# reading data from a range of cells (from column 1 to 6)
my_list = list()
for value in ws.iter_rows(
min_row=1, max_row=11, min_col=1, max_col=6,
values_only=True):
my_list.append(value)
for ele1,ele2,ele3,ele4,ele5,ele6 in my_list:
(print ("{:<8}{:<35}{:<10}
{:<10}{:<15}{:<15}".format(ele1,ele2,ele3,ele4,ele5,ele6)))
ऊपर का कोड चलाने के बाद पहले छह स्तंभों की पहली दस पंक्तियाँ प्रदर्शित होनी चाहिए:

Openpyxl के साथ Excel फ़ाइलों में लिखना
अब जब हमें Excel फ़ाइलों तक पहुँचना और उनसे पढ़ना आता है, तो Openpyxl का उपयोग कर उनमें लिखना सीखते हैं।
किसी सेल में लिखना
Openpyxl से फ़ाइल में लिखने के दो तरीके हैं।
पहला, आप सेल को उसकी की के माध्यम से सीधे एक्सेस कर सकते हैं:
ws['K1'] = 'Sum of Sales'
दूसरा तरीका है उस सेल की पंक्ति और स्तंभ स्थिति बताना जिसमें आप लिखना चाहते हैं:
ws.cell(row=1, column=11, value = 'Sum of Sales')
हर बार जब आप Openpyxl से Excel फ़ाइल में लिखते हैं, तो आपको निम्न कोड चलाकर बदलाव सेव करने होते हैं, वरना वे वर्कशीट में परिलक्षित नहीं होंगे:
wb.save('videogamesales.xlsx')
यदि सेव करते समय वर्कबुक खुली हुई है, तो आपको निम्न अनुमति त्रुटि का सामना करना पड़ेगा:

बदलाव सेव करने से पहले Excel फ़ाइल को बंद करना सुनिश्चित करें। उसके बाद आप उसे दोबारा खोलकर जाँच सकते हैं कि बदलाव आपकी वर्कशीट में दिख रहे हैं:

ध्यान दें कि K1 सेल में “Sum of Sales” नाम का नया स्तंभ बन गया है।
नया स्तंभ बनाना
अब हर क्षेत्र की बिक्री का योग जोड़ते हैं और उसे स्तंभ K में लिखते हैं।
हम यह पहली पंक्ति के बिक्री डेटा के लिए करेंगे:
row_position = 2
col_position = 7
total_sales = ((ws.cell(row=row_position, column=col_position).value)+
(ws.cell(row=row_position, column=col_position+1).value)+
(ws.cell(row=row_position, column=col_position+2).value)+
(ws.cell(row=row_position, column=col_position+3).value))
ws.cell(row=2,column=11).value=total_sales
wb.save('videogamesales.xlsx')
ध्यान दें कि पहली गेम के लिए कुल बिक्री K2 सेल में गणना हो गई है:

इसी तरह, हर पंक्ति में बिक्री मानों का योग करने के लिए एक for लूप बनाते हैं:
row_position = 1
for i in range(1, ws.max_row):
row_position += 1
NA_Sales = ws.cell(row=row_position, column=7).value
EU_Sales = ws.cell(row=row_position, column=8).value
JP_Sales = ws.cell(row=row_position, column=9).value
Other_Sales = ws.cell(row=row_position, column=10).value
total_sales = (NA_Sales + EU_Sales + JP_Sales + Other_Sales)
ws.cell(row=row_position, column=11).value = total_sales
wb.save("videogamesales.xlsx")
अब आपकी Excel फ़ाइल में सभी क्षेत्रों की कुल वीडियो गेम बिक्री को दर्शाता एक नया स्तंभ होना चाहिए:

नई पंक्तियाँ जोड़ना
वर्कबुक में नई पंक्ति जोड़ने के लिए, बस इच्छित मानों के साथ एक ट्यूपल बनाएँ और उसे शीट में लिखें:
new_row = (1,'The Legend of Zelda',1986,'Action','Nintendo',3.74,0.93,1.69,0.14,6.51,6.5)
ws.append(new_row)
wb.save('videogamesales.xlsx')
आप वर्कबुक की अंतिम पंक्ति प्रिंट करके पुष्टि कर सकते हैं कि यह डेटा जोड़ दिया गया है:
values = [ws.cell(row=ws.max_row,column=i).value for i in range(1,ws.max_column+1)]
print(values)
निम्न आउटपुट उत्पन्न होगा:
[1, 'The Legend of Zelda', 1986, 'Action', 'Nintendo', 3.74, 0.93, 1.69, 0.14, 6.51, 6.5]
पंक्तियाँ हटाना
अभी जो नई पंक्ति जोड़ी है उसे हटाने के लिए, यह लाइन चलाएँ:
ws.delete_rows(ws.max_row, 1) # row number, number of rows to delete
wb.save('videogamesales.xlsx')
delete_rows() का पहला आर्गुमेंट हटाने वाली पंक्ति संख्या है। दूसरा हटाने वाली पंक्तियों की संख्या।
Openpyxl के साथ Excel फ़ॉर्मूले बनाना
आप Openpyxl से ठीक वैसे ही फ़ॉर्मूले लिख सकते हैं जैसे Excel में लिखते हैं। यहाँ कुछ बेसिक फ़ंक्शनों के उदाहरण हैं जिन्हें आप Openpyxl से बना सकते हैं:
AVERAGE()
आइए “Average Sales” नामक नया स्तंभ बनाएँ ताकि सभी बाज़ारों में कुल वीडियो गेम बिक्री का औसत निकाला जा सके:
ws['P1'] = 'Average Sales'
ws['P2'] = '= AVERAGE(K2:K16220)'
wb.save('videogamesales.xlsx')
सभी बाज़ारों में औसत बिक्री लगभग 0.19 है। यह आपकी वर्कशीट के P2 सेल में प्रदर्शित होगी।
COUNTA()
Excel का “COUNTA” फ़ंक्शन किसी निर्धारित रेंज में भरे हुए सेल गिनता है। आइए E2 से E16220 के बीच रिकॉर्ड्स की संख्या पता करें:
ws['Q1'] = "Number of Populated Cells"
ws['Q2'] = '=COUNTA(E2:E16220)'
wb.save('videogamesales.xlsx')
इस रेंज में 16,219 रिकॉर्ड्स हैं जिनमें जानकारी है।
COUNTIF()
COUNTIF() एक प्रचलित Excel फ़ंक्शन है जो किसी विशेष शर्त को पूरा करने वाले सेल्स की संख्या गिनता है। आइए इसका उपयोग “Sports” जेनर वाले गेम्स की संख्या गिनने के लिए करें:
ws['R1'] = 'Number of Rows with Sports Genre'
ws['R2'] = '=COUNTIF(E2:E16220, "Sports")'
wb.save('videogamesales.xlsx')
डेटासेट में 2,296 स्पोर्ट्स गेम्स हैं।
SUMIF()
अब, SUMIF फ़ंक्शन का उपयोग कर स्पोर्ट्स गेम्स द्वारा उत्पन्न कुल “Sum of Sales” निकालते हैं:
ws['S1'] = 'Total Sports Sales'
ws['S2'] = '=SUMIF(E2:E16220, "Sports",K2:K16220)'
wb.save('videogamesales.xlsx')
स्पोर्ट्स गेम्स द्वारा उत्पन्न कुल बिक्री 454 है।
CEILING()
Excel का CEILING() फ़ंक्शन किसी संख्या को दिए गए निकटतम गुणज तक ऊपर की ओर राउंड करता है। इस फ़ंक्शन से स्पोर्ट्स गेम्स द्वारा उत्पन्न कुल बिक्री को राउंड करते हैं:
ws['T1'] = 'Rounded Sum of Sports Sales'
ws['T2'] = '=CEILING(S2,25)'
wb.save('videogamesales.xlsx')
हमने कुल बिक्री को 25 के निकटतम गुणज तक राउंड कर दिया है, जिसका परिणाम 475 आता है।
ऊपर दिए गए कोड स्निपेट्स आपकी Excel शीट में (सेल P1 से T2 तक) निम्न आउटपुट उत्पन्न करेंगे:

Excel फ़ॉर्मूलों, ऑपरेटर्स, और गणितीय फ़ंक्शनों पर त्वरित संदर्भ के लिए हमारा Excel Basics चीट शीट देखें।
Openpyxl में शीट्स के साथ काम करना
अब जब हमें वर्कशीट्स तक पहुँचना और उन पर लिखना आता है, तो सीखते हैं कि Openpyxl का उपयोग कर उन्हें कैसे बदलें, हटाएँ और डुप्लिकेट करें।
शीट के नाम बदलना
पहले, Openpyxl के title एट्रिब्यूट से वर्तमान सक्रिय शीट का नाम प्रिंट करते हैं:
print(ws.title)
निम्न आउटपुट रेंडर होगा:
vgsales
अब, निम्न कोड से इस वर्कशीट का नाम बदलते हैं:
ws.title ='Video Game Sales Data'
wb.save('videogamesales.xlsx')
अब आपकी सक्रिय शीट का नाम “Video Game Sales Data” हो गया होना चाहिए।
नई वर्कशीट बनाना
वर्कबुक में सभी वर्कशीट्स की सूची पाने के लिए यह कोड चलाएँ:
print(wb.sheetnames)
आपको फ़ाइल में मौजूद सभी वर्कशीट्स के नामों की एक सूची दिखाई देगी:
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']
अब एक नई खाली वर्कशीट बनाते हैं:
wb.create_sheet('Empty Sheet') # create an empty sheet
print(wb.sheetnames) # print sheet names again
wb.save('videogamesales.xlsx')
ध्यान दें कि “Empty Sheet” नाम की नई शीट बन गई है:
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', ‘Empty Sheet’]
वर्कशीट हटाना
Openpyxl का उपयोग करके वर्कशीट हटाने के लिए, remove एट्रिब्यूट का उपयोग करें और सभी शीट नाम दोबारा प्रिंट करके पुष्टि करें कि शीट हट गई है:
wb.remove(wb['Empty Sheet'])
print(wb.sheetnames)
wb.save('videogamesales.xlsx')
ध्यान दें कि “Empty Sheet” वर्कशीट अब उपलब्ध नहीं है:
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']
वर्कशीट डुप्लिकेट करना
अंत में, किसी मौजूदा वर्कशीट की कॉपी बनाने के लिए यह लाइन चलाएँ:
wb.copy_worksheet(wb['Video Game Sales Data'])
wb.save('vgsales_2.xlsx')
सभी शीट नाम फिर प्रिंट करने पर हमें निम्न आउटपुट मिलेगा:
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', 'Video Game Sales Data Copy']
Openpyxl के साथ Excel फ़ाइल में चार्ट जोड़ना
Excel को अक्सर विज़ुअलाइज़ेशन बनाने और डेटासेट्स का सार प्रस्तुत करने के लिए पसंदीदा टूल माना जाता है। इस खंड में, हम Openpyxl का उपयोग कर Python से सीधे Excel में चार्ट बनाना सीखेंगे।
बार चार्ट
पहले एक साधारण बार चार्ट बनाते हैं जो जेनर के आधार पर वीडियो गेम्स की कुल बिक्री दिखाए। इसके लिए हम “Total Sales by Genre” वर्कशीट का उपयोग करेंगे:

इस वर्कशीट में एक पिवट टेबल है जिसमें जेनर के अनुसार बिक्री का योग एग्रीगेट किया गया है, जैसा कि ऊपर स्क्रीनशॉट में दिखाया गया है।
बार चार्ट बनाने से पहले इस वर्कशीट तक पहुँचते हैं:
ws = wb['Total Sales by Genre'] # access the required worksheet
अब, हमें Openpyxl को वे मान और श्रेणियाँ बतानी हैं जिन्हें हम प्लॉट करना चाहते हैं।
मान (Values):
मानों में वह “Sum of Sales” डेटा शामिल है जिसे हम प्लॉट करना चाहते हैं। हमें Openpyxl को यह बताना है कि Excel फ़ाइल में यह डेटा कहाँ मिलता है, यानी आपकी वैल्यूज़ जहाँ से शुरू और जहाँ तक हैं, उस रेंज को देना है।
Openpyxl में चार पैरामीटर्स हैं जो यह बताने में मदद करते हैं कि आपके मान कहाँ स्थित हैं:
-
Min_column: डेटा वाला न्यूनतम स्तंभ -
Max_column: डेटा वाला अधिकतम स्तंभ -
Min_row: डेटा वाली न्यूनतम पंक्ति -
Max_row: डेटा वाली अधिकतम पंक्ति
यहाँ एक चित्र है जो दर्शाता है कि आप इन पैरामीटर्स को कैसे परिभाषित कर सकते हैं:

ध्यान दें कि न्यूनतम पंक्ति पहली पंक्ति है, दूसरी नहीं। इसका कारण यह है कि Openpyxl उस पंक्ति से गिनती शुरू करता है जिसमें संख्यात्मक मान है।
# Values for plotting
from openpyxl.chart import Reference
values = Reference(ws, # worksheet object
min_col=2, # minimum column where your values begin
max_col=2, # maximum column where your values end
min_row=1, # minimum row you’d like to plot from
max_row=13) # maximum row you’d like to plot from
श्रेणियाँ (Categories)
अब, हमें अपने बार चार्ट की श्रेणियों के लिए भी वही पैरामीटर परिभाषित करने हैं:

चार्ट की श्रेणियों के लिए पैरामीटर सेट करने हेतु आप यह कोड उपयोग कर सकते हैं:
cats = Reference(ws,
min_col=1,
max_col=1,
min_row=2,
max_row=13)
बार चार्ट बनाना
अब, हम बार चार्ट ऑब्जेक्ट बना सकते हैं और निम्न कोड का उपयोग करके इसमें अपने मान और श्रेणियाँ शामिल कर सकते हैं:
from openpyxl.chart import BarChart
chart = BarChart()
chart.add_data(values, titles_from_data=True)
chart.set_categories(cats)
चार्ट शीर्षक सेट करना
अंत में, आप चार्ट शीर्षक सेट कर सकते हैं और Openpyxl को बता सकते हैं कि Excel शीट में इसे कहाँ बनाना है:
# set the title of the chart
chart.title = "Total Sales"
# set the title of the x-axis
chart.x_axis.title = "Genre"
# set the title of the y-axis
chart.y_axis.title = "Total Sales by Genre"
# the top-left corner of the chart
# is anchored to cell F2 .
ws.add_chart(chart,"D2")
# save the file
wb.save("videogamesales.xlsx")
इसके बाद आप Excel फ़ाइल खोलें और “Total Sales by Genre” वर्कशीट पर जाएँ। आपको इस तरह का चार्ट दिखाई देना चाहिए:

ग्रुप्ड बार चार्ट
अब, जेनर और क्षेत्र के अनुसार कुल बिक्री दर्शाने वाला ग्रुप्ड बार चार्ट बनाते हैं। इस चार्ट के लिए डेटा “Breakdown of Sales by Genre” वर्कशीट में मिलेगा:

बार चार्ट की तरह ही, हमें मानों और श्रेणियों के लिए रेंज परिभाषित करनी है:

अब हम वर्कशीट तक पहुँच सकते हैं और इसे कोड में लिख सकते हैं:
### Creating a Grouped Bar Chart with Openpyxl
ws = wb['Breakdown of Sales by Genre'] # access worksheet
# Data for plotting
values = Reference(ws,
min_col=2,
max_col=5,
min_row=1,
max_row=13)
cats = Reference(ws, min_col=1,
max_col=1,
min_row=2,
max_row=13)
अब हम बार चार्ट ऑब्जेक्ट बना सकते हैं, उसमें मान और श्रेणियाँ जोड़ सकते हैं, और शीर्षक पैरामीटर पहले की तरह सेट कर सकते हैं:
# Create object of BarChart class
chart = BarChart()
chart.add_data(values, titles_from_data=True)
chart.set_categories(cats)
# set the title of the chart
chart.title = "Sales Breakdown"
# set the title of the x-axis
chart.x_axis.title = "Genre"
# set the title of the y-axis
chart.y_axis.title = "Breakdown of Sales by Genre"
# the top-left corner of the chart is anchored to cell H2.
ws.add_chart(chart,"H2")
# save the file
wb.save("videogamesales.xlsx")
वर्कशीट खोलने पर आपको इस तरह का ग्रुप्ड बार चार्ट दिखाई देना चाहिए:

स्टैक्ड लाइन चार्ट
अंत में, हम “Breakdown of Sales by Year” टैब के डेटा से स्टैक्ड लाइन चार्ट बनाएँगे। इस वर्कशीट में वर्ष और क्षेत्र के अनुसार वीडियो गेम बिक्री डेटा है:

आइए इस चार्ट के मानों और श्रेणियों के लिए रेंज परिभाषित करें:

अब हम इन न्यूनतम और अधिकतम मानों को कोड में लिख सकते हैं:
# Data for plotting
values = Reference(ws,
min_col=2,
max_col=6,
min_row=1,
max_row=40)
cats = Reference(ws, min_col=1, max_col=1, min_row=2, max_row=40)
अंत में, लाइन चार्ट ऑब्जेक्ट बनाते हैं और ग्राफ़ का शीर्षक, x-अक्ष, और y-अक्ष सेट करते हैं:
# Create object of LineChart class
from openpyxl.chart import LineChart
chart = LineChart()
chart.add_data(values, titles_from_data=True)
chart.set_categories(cats)
# set the title of the chart
chart.title = "Total Sales"
# set the title of the x-axis
chart.x_axis.title = "Year"
# set the title of the y-axis
chart.y_axis.title = "Total Sales by Year"
# the top-left corner of the chart is anchored to cell H2
ws.add_chart(chart,"H2")
# save the file
wb.save("videogamesales.xlsx")
आपकी वर्कशीट पर इस तरह का स्टैक्ड लाइन चार्ट दिखाई देना चाहिए:

Openpyxl से सेल्स की फॉर्मेटिंग
Openpyxl उपयोगकर्ताओं को Excel वर्कबुक में सेल्स को स्टाइल करने देता है। आप Python से सीधे फ़ॉन्ट आकार, बैकग्राउंड रंग, और सेल बॉर्डर बदलकर अपनी स्प्रेडशीट को आकर्षक बना सकते हैं।
Openpyxl का उपयोग कर अपनी Python Excel स्प्रेडशीट को कस्टमाइज़ करने के कुछ तरीके:
फ़ॉन्ट आकार और शैली बदलना
आइए निम्न कोड से A1 सेल में फ़ॉन्ट आकार बढ़ाएँ और टेक्स्ट को बोल्ड करें:
from openpyxl.styles import Font
ws = wb['Video Game Sales Data']
ws['A1'].font = Font(bold=True, size=12)
wb.save('videogamesales.xlsx')
ध्यान दें कि अब A1 सेल का टेक्स्ट थोड़ा बड़ा और बोल्ड हो गया है:

अब मान लीजिए, हम पहली पंक्ति में सभी कॉलम हेडर के फ़ॉन्ट का आकार और शैली बदलना चाहते हैं?
इसके लिए, हम वही कोड इस्तेमाल कर सकते हैं और बस पहली पंक्ति के सभी कॉलमों पर इटरेट करने के लिए एक for लूप बना सकते हैं:
for row in ws.iter_rows(min_row=1, max_row=1):
for cell in row:
cell.font = Font(bold=True, size=12)
wb.save('videogamesales.xlsx')
जब हम [“1:1”] पर इटरेट करते हैं, तो हम Openpyxl को लूप करने के लिए आरंभ और अंत पंक्ति बता रहे होते हैं। उदाहरण के लिए, यदि हम पहली दस पंक्तियों पर लूप करना चाहते, तो हम [“1:10”] निर्दिष्ट करते।
आप Excel शीट खोलकर देख सकते हैं कि बदलाव प्रतिबिंबित हुए हैं या नहीं:

फ़ॉन्ट का रंग बदलना
आप Openpyxl में हेक्स कोड का उपयोग करके फ़ॉन्ट रंग बदल सकते हैं:
from openpyxl.styles import colors
ws['A1'].font = Font(color = 'FF0000',bold=True, size=12) ## red
ws['A2'].font = Font(color = '0000FF') ## blue
wb.save('videogamesales.xlsx')
वर्कबुक को सेव करने और दोबारा खोलने के बाद, A1 और A2 सेल के फ़ॉन्ट रंग बदल चुके होने चाहिए:
सेल की पृष्ठभूमि का रंग बदलना
किसी सेल की पृष्ठभूमि का रंग बदलने के लिए, आप Openpyxl के PatternFill मॉड्यूल का उपयोग कर सकते हैं:
## changing background color of a cell
from openpyxl.styles import PatternFill
ws["A1"].fill = PatternFill('solid', start_color="38e3ff") # light blue background color
wb.save('videogamesales.xlsx')
आपकी वर्कशीट में निम्न बदलाव दिखाई देना चाहिए:

सेल बॉर्डर जोड़ना
Openpyxl का उपयोग करके सेल बॉर्डर जोड़ने के लिए, निम्न कोड चलाएँ:
## cell borders
from openpyxl.styles import Border, Side
my_border = Side(border_style="thin", color="000000")
ws["A1"].border = Border(
top=my_border, left=my_border, right=my_border, bottom=my_border
)
wb.save("videogamesales.xlsx")
आपको A1 सेल पर इस तरह का बॉर्डर दिखाई देना चाहिए:

कंडीशनल फॉर्मेटिंग
कंडीशनल फॉर्मेटिंग वह प्रक्रिया है जिसमें Excel फ़ाइल में निर्धारित शर्तों के आधार पर विशिष्ट मानों को हाईलाइट किया जाता है। यह उपयोगकर्ताओं को डेटा को अधिक आसानी से विज़ुअलाइज़ करने और अपनी वर्कशीट में मानों को बेहतर ढंग से समझने में मदद करता है।
आइए Openpyxl का उपयोग करके सभी वीडियो गेम बिक्री मानों को, जो 8 से अधिक या बराबर हैं, हरे रंग में हाईलाइट करें:
from openpyxl.formatting.rule import CellIsRule
fill = PatternFill(
start_color='90EE90',
end_color='90EE90',fill_type='solid') # specify background color
ws.conditional_formatting.add(
'G2:K16594', CellIsRule(operator='greaterThan', formula=[8], fill=fill)) # include formatting rule
wb.save('videogamesales.xlsx')
पहले कोड ब्लॉक में, हम उन सेल्स की पृष्ठभूमि का रंग निर्दिष्ट करते हैं जिन्हें हम फॉर्मेट करना चाहते हैं। इस मामले में, रंग हल्का हरा है।
फिर, हम एक कंडीशनल फॉर्मेटिंग नियम बनाते हैं जो बताता है कि 8 से बड़े किसी भी मान को हमारे द्वारा निर्दिष्ट फ़िल रंग में हाईलाइट किया जाना चाहिए। हम उन सेल्स की रेंज भी बताते हैं जिन पर यह शर्त लागू करनी है।
ऊपर का कोड चलाने के बाद, 8 से अधिक सभी बिक्री मान इस तरह हाईलाइट हो जाएंगे:

अंतिम विचार
हमने इस ट्यूटोरियल में बहुत कुछ कवर किया है—Openpyxl लाइब्रेरी के मूल उपयोग से लेकर Python में चार्ट बनाने और स्प्रेडशीट फॉर्मेट करने जैसी उन्नत प्रक्रियाओं तक।
अपने-अपने स्तर पर, Python और Excel डेटा वर्कफ़्लो के अलग-अलग हिस्सों को कवर करते हैं। Excel रिपोर्टिंग और ऐड-हॉक विश्लेषण संभालता है; Python स्केल पर मॉडलिंग, ऑटोमेशन और कंप्यूटेशन संभालता है।
Excel का सबसे बड़ा लाभ यह है कि इसका उपयोग लगभग सभी लोग करते हैं। गैर-तकनीकी स्टेकहोल्डर से लेकर एंट्री-लेवल तक—संगठन के हर स्तर के कर्मचारी Excel स्प्रेडशीट में प्रस्तुत रिपोर्टों को समझते हैं।
दूसरी ओर, Python बड़े पैमाने पर डेटा का विश्लेषण करने और उस पर मॉडल बनाने के लिए उपयोग होता है। यह टीमों को मेहनत-तलब कार्यों को स्वचालित करने और संगठनात्मक दक्षता में सुधार करने में मदद कर सकता है।
जब Excel और Python साथ में उपयोग किए जाते हैं, तो आप घंटों के दोहराए जाने वाले काम को ऑटोमेट कर सकते हैं और आउटपुट उसी फ़ॉर्मेट में दे सकते हैं जिसे आपकी पूरी टीम पहले से समझती है। इन कौशलों को आगे बढ़ाने के लिए, मैं हमारे Python for Spreadsheet Users कोर्स की सलाह देता/देती हूँ, या Excel स्प्रेडशीट के अंदर नेटिव रूप से Python चलाने के लिए हमारा Python in Excel गाइड देखें।
FAQs
Python बड़े Excel डेटासेट को Excel की तुलना में अधिक कुशलता से कैसे संभालता है?
Python, pandas और numpy जैसी लाइब्रेरी के जरिए बड़े डेटासेट को अधिक प्रभावी ढंग से संभालता है, जो परफॉर्मेंस के लिए बनी हैं। Excel के विपरीत, Python ग्राफिकल इंटरफेस पर निर्भर नहीं करता, जिससे यह लाखों पंक्तियों को इन-मेमाेरी प्रोसेस कर सकता है और उन्नत ऑपरेशन बिना क्रैश हुए या बड़े स्लोडाउन के कर सकता है।
क्या Python, गैर-Excel फ़ॉर्मेट्स के साथ काम कर सकता है और उन्हें Excel में कन्वर्ट कर सकता है?
हाँ, Python विभिन्न फ़ाइल फ़ॉर्मेट जैसे CSV, JSON और डेटाबेस के साथ काम कर सकता है। pandas जैसी लाइब्रेरी का उपयोग करके, आप इन फ़ॉर्मेट्स को पढ़ सकते हैं और आसानी से Excel फ़ाइलों में एक्सपोर्ट कर सकते हैं। उदाहरण के लिए:
import pandas as pd
data = pd.read_csv('data.csv') # Load CSV file
data.to_excel('data.xlsx', index=False) # Save as Excelक्या Python की मदद से कई Excel फ़ाइलों के डेटा को जोड़ा जा सकता है?
हाँ, Python आपको कई Excel फ़ाइलों के डेटा को एक ही फ़ाइल या वर्कशीट में समेकित करने देता है। यह openpyxl या pandas जैसी लाइब्रेरी का उपयोग करके किया जा सकता है। उदाहरण के लिए, pandas के साथ आप कई फ़ाइलों को डेटा फ़्रेम में पढ़कर उन्हें मर्ज या कंकैटिनेट कर सकते हैं और परिणाम को वापस Excel फ़ाइल में सेव कर सकते हैं:
import pandas as pd
df1 = pd.read_excel('file1.xlsx')
df2 = pd.read_excel('file2.xlsx')
combined = pd.concat([df1, df2])
combined.to_excel('combined.xlsx', index=False)मैं openpyxl के साथ बड़ी Excel फ़ाइल को कुशलतापूर्वक कैसे पढ़ूँ?
मेमोरी उपयोग घटाने के लिए वर्कबुक को रीड-ओनली मोड (read_only=True) में खोलें। रीड-ओनली मोड पूरे वर्कबुक को मेमोरी में लोड करने के बजाय डेटा को पंक्ति-दर-पंक्ति स्ट्रीम करता है। यह सैकड़ों हजारों पंक्तियों वाली फ़ाइलों को बिना स्लोडाउन के संभाल सकता है, लेकिन फ़ाइल में वापस लिखने का समर्थन नहीं करता।
Excel के साथ काम करने के लिए openpyxl और pandas में क्या अंतर है?
openpyxl सीधे Excel के .xlsx फ़ॉर्मेट के साथ काम करता है और आपको सेल फॉर्मेटिंग, चार्ट, फार्मूले और वर्कशीट संरचना पर नियंत्रण देता है। pandas Excel को एक डेटा स्रोत की तरह ट्रीट करता है और उसे DataFrame में लोड करता है, जो डेटा विश्लेषण और ट्रांसफॉर्मेशन के लिए अधिक उपयुक्त है। जब आपको सेल फॉर्मेट करना, चार्ट बनाना, या शून्य से Excel फ़ाइल बनानी हो तो openpyxl का उपयोग करें। जब आपको Excel फ़ाइल से डेटा को फ़िल्टर, एग्रीगेट या रीशेप करना हो तो pandas का उपयोग करें।
नताशा एक डेटा कंसल्टेंट हैं जो डेटा साइंस और मार्केटिंग के संगम पर काम करती हैं। उनका मानना है कि समझदारी से इस्तेमाल किया गया डेटा व्यक्तियों और संगठनों के लिए असाधारण विकास को प्रेरित कर सकता है। एक स्व-अध्ययनित डेटा प्रोफेशनल के रूप में, नताशा ऐसे लेख लिखना पसंद करती हैं जो अन्य डेटा साइंस अभ्यर्थियों को इस उद्योग में प्रवेश करने में मदद करें। उनके निजी ब्लॉग और बाहरी प्रकाशनों पर प्रकाशित लेख औसतन 200 हजार मासिक दृश्य प्राप्त करते हैं।
