fx Python for Excel
ENहिन्दी

pandas: read_excel, filtering, groupby, merge

⏱ 15 min

आप क्या सीखेंगे

  • पढ़ना
  • फ़िल्टर — AutoFilter की तरह
  • नए कॉलम

समझिए

Foundations ट्रैक का सेल्स डेटा (Date, Salesperson, Region, Product, Amount) sales.xlsx की "Data" शीट में इस्तेमाल करेंगे।

1. पढ़ना

import pandas as pd

df = pd.read_excel("sales.xlsx", sheet_name="Data")
print(df.shape)       # (rows, columns)
print(df.head())      # first 5 rows
print(df.dtypes)      # type of each column

काम के विकल्प:

pd.read_excel("file.xlsx", sheet_name=None)          # ALL sheets -> dict of DataFrames
pd.read_excel("file.xlsx", skiprows=3)               # report has 3 title rows on top
pd.read_excel("file.xlsx", usecols="A:E")            # only these columns
pd.read_excel("file.xlsx", dtype={"PIN": str})       # keep leading zeros
pd.read_csv("file.csv")                              # CSV

DataFrame एक टेबल है; एक कॉलम (df["Amount"]) Series है।

2. फ़िल्टर — AutoFilter की तरह

north = df[df["Region"] == "North"]
big_laptops = df[(df["Product"] == "Laptop") & (df["Amount"] > 50000)]
north_west = df[df["Region"].isin(["North", "West"])]

AND के लिए &, OR के लिए | इस्तेमाल करें, और हर शर्त ब्रैकेट में रखें।

query अंग्रेज़ी जैसा पढ़ा जाता है:

df.query("Amount >= 30000 and Region != 'West'")

3. नए कॉलम

df["GST"] = df["Amount"] * 0.18
df["Total"] = df["Amount"] + df["GST"]
df["Month"] = df["Date"].dt.to_period("M").astype(str)     # "2026-04"
df["Name"] = df["Salesperson"].str.strip().str.title()     # TRIM + PROPER

पूरा कॉलम एक साथ गणना होता है — न लूप, न फ़ॉर्मूला खींचना।

4. groupby — SUMIFS / पिवट टेबल की तरह

df.groupby("Salesperson")["Amount"].sum()

एक साथ कई टोटल, साफ़ टेबल के रूप में:

summary = (df.groupby("Region")
             .agg(Orders=("Amount", "count"), Total=("Amount", "sum"), Average=("Amount", "mean"))
             .reset_index()
             .sort_values("Total", ascending=False))
Region Orders Total Average
South 3 96000 32000
North 3 92000 30667
West 1 61000 61000

Excel पिवट जैसी क्रॉस-टेबल:

df.pivot_table(index="Region", columns="Product", values="Amount", aggfunc="sum", fill_value=0)

5. merge — XLOOKUP की तरह

products.xlsx में Product, Category, Cost है। हर सेल्स रो में Category और Cost लाएँ:

prod = pd.read_excel("products.xlsx")
merged = df.merge(prod, on="Product", how="left")
merged["Profit"] = merged["Amount"] - merged["Cost"]
how= क्या रखता है
"left" हर सेल्स रो (मेल न खाने वाले लुकअप NaN बनते हैं) — XLOOKUP जैसा
"inner" सिर्फ़ वे रो जो दोनों में हैं
"outer" दोनों की सारी रो

अगर key कॉलम के नाम अलग हों: left_on="Item", right_on="Product"।

6. कई फ़ाइलें जोड़ना

from pathlib import Path
files = Path("data").glob("*.xlsx")
all_data = pd.concat([pd.read_excel(f) for f in files], ignore_index=True)

concat टेबल को एक के ऊपर एक रखता है (कॉलम वही)।

7. झटपट सफ़ाई

df = df.drop_duplicates()
df = df.dropna(subset=["Amount"])                                    # remove rows with no amount
df["Date"] = pd.to_datetime(df["Date"], format="%d/%m/%Y", errors="coerce")   # text dates → dates
df["Amount"] = pd.to_numeric(df["Amount"], errors="coerce")          # "NA" → NaN instead of crashing

errors="coerce" गलत वैल्यू को खाली (NaT/NaN) बना देता है ताकि आप उन्हें ढूँढकर रिपोर्ट कर सकें।

आम गलतियाँ

फ़िल्टर में &/| की जगह and/or इस्तेमाल करना। हर शर्त के चारों ओर ब्रैकेट भूलना। भारतीय तारीख़ों के लिए format= या dayfirst=True न देना। अतिरिक्त स्पेस वाली key पर merge करना (पहले strip करें)।

अभ्यास

mediumअपना सेल्स डेटा लोड करें और कोड से जवाब दें: रीजन के हिसाब से टोटल, सबसे ऊपर का सेल्सपर्सन, 50,000 से ऊपर की सारी Laptop बिक्री, और Region × Product पिवट। फिर एक छोटी products टेबल merge करें और रीजन के हिसाब से मुनाफ़ा निकालें।
groupby("Region")["Amount"].sum() तथा Salesperson totals का idxmax() लें। (Product == "Laptop") & (Amount > 50000) filter और Region/Product का pivot_table बनाएँ। Products को Product पर validate="many_to_one" से merge करें, missing UnitCost जाँचें, Profit = Amount−Qty*UnitCost निकालकर Region से जोड़ें।

प्रश्नोत्तरी

pandas फ़िल्टर में AND ऑपरेटर?
&
groupby().sum() का Excel में बराबर?
SUMIFS या पिवट टेबल
कौन-सा how बाईं टेबल की सारी रो रखता है?
"left"
pandas: read_excel, filtering, groupby, merge · हिंदी | ExcelWalaa