Pandas-आधारित डेटा एजेंट टूल
read_csv, groupby, merge और describe संचालन के लिए टूल परिभाषाएँ।
Pandas-आधारित डेटा एजेंट टूल, CoddyKit पर AI एजेंट का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह AI एजेंट सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। AI एजेंट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
डेटा एजेंटों के लिए pandas उपकरण
मनमाना कोड जनरेट करने के बजाय, आप डेटा एजेंट को स्पष्ट रूप से परिभाषित pandas उपकरणों का एक समूह दे सकते हैं। प्रत्येक उपकरण एक विशिष्ट डेटा कार्य करता है और संरचित परिणाम लौटाता है।
यह तरीका मुक्त-रूप कोड निर्माण से अधिक सुरक्षित और पूर्वानुमेय है—एजेंट शून्य से कोड लिखने के बजाय उपकरण चुनकर उन्हें क्रम से चलाता है।
उपकरण: read_csv
किसी भी डेटा विश्लेषण सत्र का प्रवेश-बिंदु। read_csv एक CSV फ़ाइल को मेमोरी में लोड करता है और उसके आकार तथा कॉलम का विवरण लौटाता है, ताकि एजेंट को पता हो कि वह किस डेटा पर काम कर रहा है।
import pandas as pd
from typing import Optional
# In-memory dataframe store (shared across tool calls in one session)
dataframes = {}
def read_csv(path: str, df_name: str = 'df') -> dict:
'''Load a CSV file and return schema info.'''
df = pd.read_csv(path)
dataframes[df_name] = df
return {
'df_name': df_name,
'rows': len(df),
'columns': list(df.columns),
'dtypes': df.dtypes.astype(str).to_dict(),
'sample': df.head(3).to_dict(orient='records'),
'null_counts': df.isnull().sum().to_dict()
}
# Agent usage:
result = read_csv('orders.csv', 'orders')
print(f"Loaded {result['rows']} rows, columns: {result['columns']}")उपकरण: filter_dataframe
किसी शर्त के आधार पर पंक्तियों को छाँटें। शर्त का मूल्यांकन df.query() का उपयोग करके डेटाफ़्रेम पर किया जाता है; यह pandas एक्सप्रेशन के सुरक्षित सीमित उपसमुच्चय का समर्थन करता है।
def filter_dataframe(df_name: str, condition: str, result_name: str = None) -> dict:
'''Filter rows matching condition. Returns filtered dataframe info.'''
df = dataframes.get(df_name)
if df is None:
return {'error': f'Dataframe {df_name!r} not found. Call read_csv first.'}
try:
filtered = df.query(condition)
store_name = result_name or f'{df_name}_filtered'
dataframes[store_name] = filtered
return {
'df_name': store_name,
'rows_before': len(df),
'rows_after': len(filtered),
'sample': filtered.head(3).to_dict(orient='records')
}
except Exception as e:
return {'error': f'Filter error: {e}'}
# Example: filter orders from 2024
result = filter_dataframe('orders', 'order_date >= "2024-01-01"', 'orders_2024')
print(f"Filtered to {result['rows_after']} rows")उपकरण: groupby_aggregate
किसी कॉलम के आधार पर पंक्तियों को समूहित करें और समेकित मान निकालें। यह सबसे अधिक आवश्यक डेटा विश्लेषण कार्यों में से एक है—कुल, औसत और श्रेणी के अनुसार गणनाएँ।
def groupby_aggregate(df_name: str, group_column: str,
agg_column: str, agg_func: str) -> dict:
'''Group by column and aggregate. agg_func: sum, mean, count, min, max, median'''
df = dataframes.get(df_name)
if df is None:
return {'error': f'Dataframe {df_name!r} not found'}
VALID_FUNCS = {'sum', 'mean', 'count', 'min', 'max', 'median', 'std'}
if agg_func not in VALID_FUNCS:
return {'error': f'Invalid agg_func. Choose from: {VALID_FUNCS}'}
try:
result = df.groupby(group_column)[agg_column].agg(agg_func).reset_index()
result.columns = [group_column, f'{agg_column}_{agg_func}']
result = result.sort_values(f'{agg_column}_{agg_func}', ascending=False)
return {
'result': result.head(20).to_dict(orient='records'),
'total_groups': len(result)
}
except Exception as e:
return {'error': str(e)}
# Agent call: total revenue by product category
print(groupby_aggregate('orders', 'category', 'revenue', 'sum'))उपकरण: merge_dataframes
दो डेटाफ़्रेम को साझा कुंजी के आधार पर जोड़ें। इससे एजेंट कई फ़ाइलों के डेटा को मिला सकता है—जैसे ग्राहक नाम पाने के लिए ऑर्डर और ग्राहक सारणी को जोड़ना।
def merge_dataframes(df1_name: str, df2_name: str,
on: str, how: str = 'inner',
result_name: str = 'merged') -> dict:
'''Join two dataframes on a key column.'''
df1 = dataframes.get(df1_name)
df2 = dataframes.get(df2_name)
if df1 is None:
return {'error': f'{df1_name!r} not found'}
if df2 is None:
return {'error': f'{df2_name!r} not found'}
VALID_HOW = {'inner', 'left', 'right', 'outer'}
if how not in VALID_HOW:
return {'error': f'Invalid join type. Choose from: {VALID_HOW}'}
try:
merged = df1.merge(df2, on=on, how=how)
dataframes[result_name] = merged
return {
'df_name': result_name,
'rows': len(merged),
'columns': list(merged.columns),
'sample': merged.head(3).to_dict(orient='records')
}
except Exception as e:
return {'error': str(e)}
# Join orders with customers on customer_id
print(merge_dataframes('orders', 'customers', on='customer_id'))उपकरण: describe_dataframe
डेटाफ़्रेम का सांख्यिकीय सारांश लौटाएँ। डेटा लोड करने के बाद एजेंट आम तौर पर सबसे पहले इसी उपकरण को चलाता है, ताकि वितरण, सीमाएँ और डेटा गुणवत्ता की संभावित समस्याएँ समझी जा सकें।
def describe_dataframe(df_name: str) -> dict:
'''Return statistical summary and data quality info.'''
df = dataframes.get(df_name)
if df is None:
return {'error': f'Dataframe {df_name!r} not found'}
# Numeric stats
numeric_cols = df.select_dtypes(include='number').columns.tolist()
stats = {}
for col in numeric_cols:
s = df[col].describe()
stats[col] = {
'min': round(float(s['min']), 4),
'max': round(float(s['max']), 4),
'mean': round(float(s['mean']), 4),
'median': round(float(df[col].median()), 4),
'std': round(float(s['std']), 4),
'nulls': int(df[col].isnull().sum())
}
# Categorical columns summary
cat_cols = df.select_dtypes(include='object').columns.tolist()
cat_stats = {
col: {
'unique_values': df[col].nunique(),
'top_3': df[col].value_counts().head(3).to_dict()
}
for col in cat_cols
}
return {'numeric': stats, 'categorical': cat_stats, 'total_rows': len(df)}उपकरण: sort_and_top_n
किसी कॉलम के अनुसार क्रमबद्ध शीर्ष N पंक्तियाँ लौटाएँ। 'शीर्ष ग्राहक', 'सर्वश्रेष्ठ उत्पाद' और 'सबसे अधिक राजस्व' जैसे प्रश्नों के लिए उपयोगी।
def sort_and_top_n(df_name: str, sort_column: str,
n: int = 10, ascending: bool = False) -> dict:
'''Return top N rows sorted by column.'''
df = dataframes.get(df_name)
if df is None:
return {'error': f'{df_name!r} not found'}
if sort_column not in df.columns:
return {'error': f'Column {sort_column!r} not found. Available: {list(df.columns)}'}
sorted_df = df.sort_values(sort_column, ascending=ascending)
top = sorted_df.head(n)
return {
'rows': top.to_dict(orient='records'),
'total_rows_in_df': len(df),
'sort_column': sort_column,
'sort_order': 'ascending' if ascending else 'descending'
}
# Top 5 orders by total value
print(sort_and_top_n('orders', 'total_amount', n=5))उपकरण: pivot_table
पिवट सारणी बनाएँ—दो श्रेणीबद्ध कॉलमों का किसी समेकित मान के साथ तुलनात्मक सारणीकरण। 'क्षेत्र और उत्पाद श्रेणी के अनुसार राजस्व' जैसे प्रश्नों के लिए बिल्कुल उपयुक्त।
def pivot_table(df_name: str, index: str, columns: str,
values: str, aggfunc: str = 'sum') -> dict:
'''Create a pivot table.'''
df = dataframes.get(df_name)
if df is None:
return {'error': f'{df_name!r} not found'}
VALID_FUNCS = {'sum', 'mean', 'count', 'min', 'max'}
if aggfunc not in VALID_FUNCS:
return {'error': f'Invalid aggfunc. Choose from: {VALID_FUNCS}'}
try:
pivot = df.pivot_table(
index=index, columns=columns,
values=values, aggfunc=aggfunc,
fill_value=0
)
# Convert to nested dict for JSON serialization
result = pivot.round(2).to_dict()
return {
'pivot': result,
'index': index,
'columns': columns,
'values': values,
'aggfunc': aggfunc
}
except Exception as e:
return {'error': str(e)}उपकरण: calculate_metric
मौजूदा डेटाफ़्रेम कॉलमों से एक व्यावसायिक माप—राजस्व वृद्धि, रूपांतरण दर, ग्राहक-त्याग दर—निकालें। LLM से pandas एक्सप्रेशन लिखने को कहने की तुलना में यह अधिक सटीक है।
def calculate_metric(df_name: str, metric: str, params: dict = None) -> dict:
'''Calculate a named business metric from the dataframe.'''
df = dataframes.get(df_name)
if df is None:
return {'error': f'{df_name!r} not found'}
params = params or {}
try:
if metric == 'conversion_rate':
total_col = params.get('total_column', 'total')
converted_col = params.get('converted_column', 'converted')
rate = df[converted_col].sum() / df[total_col].sum() * 100
return {'metric': 'conversion_rate', 'value': round(rate, 2), 'unit': '%'}
elif metric == 'average_order_value':
revenue_col = params.get('revenue_column', 'revenue')
count_col = params.get('count_column', 'order_count')
aov = df[revenue_col].sum() / df[count_col].sum()
return {'metric': 'average_order_value', 'value': round(aov, 2)}
else:
return {'error': f'Unknown metric: {metric}'}
except Exception as e:
return {'error': str(e)}LLM एजेंट के साथ उपकरण पंजीकृत करना
OpenAI के फ़ंक्शन-कॉलिंग format का उपयोग करके सभी pandas उपकरण LLM एजेंट के साथ पंजीकृत करें। उपयोगकर्ता के प्रश्न के आधार पर एजेंट तय करता है कि कौन-सा उपकरण चलाना है।
tools = [
{
'type': 'function',
'function': {
'name': 'read_csv',
'description': 'Load a CSV file for analysis',
'parameters': {
'type': 'object',
'properties': {
'path': {'type': 'string', 'description': 'Path to CSV file'},
'df_name': {'type': 'string', 'description': 'Name to reference this dataframe'}
},
'required': ['path']
}
}
},
{
'type': 'function',
'function': {
'name': 'groupby_aggregate',
'description': 'Group data by a column and compute sum, mean, count, min, max, or median',
'parameters': {
'type': 'object',
'properties': {
'df_name': {'type': 'string'},
'group_column': {'type': 'string'},
'agg_column': {'type': 'string'},
'agg_func': {'type': 'string', 'enum': ['sum', 'mean', 'count', 'min', 'max', 'median']}
},
'required': ['df_name', 'group_column', 'agg_column', 'agg_func']
}
}
}
]
if __name__ == '__main__':
print('Registered tools:')
for t in tools:
fn = t['function']
print(f" - {fn['name']}: {fn['description']}")
कई उपकरणों को क्रम से चलाना
जटिल प्रश्नों के लिए कई उपकरणों को क्रम से चलाना पड़ता है। एजेंट उन्हें क्रमशः चलाता है और एक के परिणाम को अगले के input के रूप में उपयोग करता है। अगले उपकरण को चलाने से पहले हर उपकरण का परिणाम एजेंट को लौटा दिया जाता है।
import json
import openai
import os
client = openai.OpenAI(api_key=os.getenv('OPENAI_API_KEY'))
TOOL_MAP = {
'read_csv': read_csv,
'filter_dataframe': filter_dataframe,
'groupby_aggregate': groupby_aggregate,
'describe_dataframe': describe_dataframe,
'merge_dataframes': merge_dataframes,
'sort_and_top_n': sort_and_top_n
}
def run_data_agent(question, data_paths):
messages = [
{'role': 'system', 'content': f'You are a data analyst. Available data: {data_paths}'},
{'role': 'user', 'content': question}
]
for _ in range(10): # max 10 tool calls
response = client.chat.completions.create(
model='gpt-4o', messages=messages, tools=tools
)
msg = response.choices[0].message
if not msg.tool_calls:
return msg.content # final answer
messages.append(msg)
for call in msg.tool_calls:
fn = TOOL_MAP[call.function.name]
args = json.loads(call.function.arguments)
result = fn(**args)
messages.append({'role': 'tool', 'tool_call_id': call.id,
'content': json.dumps(result)})
return 'Max tool calls reached'ज्ञान-जाँच
कोड व्याख्याकार पैटर्न की तुलना में डेटा एजेंट को pandas उपकरण देने का मुख्य लाभ क्या है?
पुनरावलोकन: pandas-आधारित डेटा एजेंट उपकरण
pandas उपकरण डेटा एजेंट को सुरक्षित, स्पष्ट रूप से परिभाषित कार्य देते हैं: read_csv, filter_dataframe, groupby_aggregate, merge_dataframes, describe_dataframe, sort_and_top_n और pivot_table।
प्रत्येक उपकरण अपने दिए गए मानों का सत्यापन करता है, त्रुटियों को सहजता से संभालता है और संरचित परिणाम लौटाता है। OpenAI के फ़ंक्शन-कॉलिंग format के साथ उपकरण पंजीकृत करें, और जटिल, कई-चरणीय डेटा प्रश्नों का उत्तर देने के लिए एजेंट अपने-आप उपकरणों को क्रम से चलाता है।
एआई शिक्षक के साथ AI एजेंट सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 60
- पाठ
- 239
अक्सर पूछे जाने वाले प्रश्न
क्या “Pandas-आधारित डेटा एजेंट टूल” पाठ निःशुल्क है?
हाँ—“Pandas-आधारित डेटा एजेंट टूल” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और AI एजेंट पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। AI एजेंट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Pandas-आधारित डेटा एजेंट टूल” में मैं क्या सीखूँगा?
read_csv, groupby, merge और describe संचालन के लिए टूल परिभाषाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ AI एजेंट का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या AI एजेंट शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर AI एजेंट शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Pandas-आधारित डेटा एजेंट टूल” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस AI एजेंट पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर AI एजेंट पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- डेटा विश्लेषण के लिए कोड इंटरप्रेटर पैटर्न
- Pandas-आधारित डेटा एजेंट टूल
- स्वचालित चार्ट और विज़ुअलाइज़ेशन बनाना
- सांख्यिकीय सारांश एजेंट