পান্ডে অক্ষ বলতে কী বোঝায়?


269

ডেটা ফ্রেম তৈরি করার জন্য আমার কোডটি এখানে:

import pandas as pd
import numpy as np

dff = pd.DataFrame(np.random.randn(1,2),columns=list('AB'))

তারপরে আমি ডেটাফ্রেম পেয়েছি:

+------------+---------+--------+
|            |  A      |  B     |
+------------+---------+---------
|      0     | 0.626386| 1.52325|
+------------+---------+--------+

আমি যখন কমন্ড টাইপ করি:

dff.mean(axis=1)

আমি পেয়েছি:

0    1.074821
dtype: float64

পান্ডাসের রেফারেন্স অনুসারে অক্ষ = 1 টি কলামের জন্য দাঁড়িয়েছে এবং আমি কমান্ডের ফলাফল আশা করি

A    0.626386
B    1.523255
dtype: float64

সুতরাং এখানে আমার প্রশ্ন: পান্ডে অক্ষ বলতে কী বোঝায়?

উত্তর:


382

এটি অক্ষটি নির্দিষ্ট করে যার সাথে গণনা করা হচ্ছে। ডিফল্ট হিসাবে axis=0। এটি numpy.meanব্যবহারের সাথে সামঞ্জস্যপূর্ণ যখন স্পষ্টভাবেaxis নির্দিষ্ট করা হয় (ইন numpy.mean, অক্ষ == ডিফল্টরূপে কিছুই হয় না, যা সমতল অ্যারের উপরে গড় মানটি গণনা করে), যার axis=0মধ্যে সারিগুলি (অর্থাত্ প্যান্ডাসে সূচক ) এবং কলামগুলিaxis=1 বরাবর থাকে । অতিরিক্ত স্পষ্টতার জন্য, কেউ (পরিবর্তে ) বা (পরিবর্তে ) নির্দিষ্ট করতে বাছাই করতে পারে ।axis='index'axis=0axis='columns'axis=1

+------------+---------+--------+
|            |  A      |  B     |
+------------+---------+---------
|      0     | 0.626386| 1.52325|----axis=1----->
+------------+---------+--------+
             |         |
             | axis=0  |
                      

164
সাধারণত অক্ষ = 0 কে "কলাম-ওয়াইজ" (এবং অক্ষ = 1 "সারি-ভিত্তিক") বলা হয়, আমি "সারি বরাবর" বিভ্রান্তিকর বলে মনে করি। (যদিও "পিক" ভাল লাগছে :))
অ্যান্ডি হেডেন

11
@ অ্যান্ডি হেডেন হ্যাঁ, তবে এটি উভয়ই কিছুটা বিভ্রান্তিকর, যারা প্রথমবারের মতো এই প্রথম এসেছিলেন;)
ঝাংক্সাওচেন

43
এছাড়াও, axis=0সারিগুলির সাথে একত্রিত হওয়ার ইঙ্গিত axis=1দেয় এবং কলামগুলির সাথে একত্রিত হওয়ার ইঙ্গিত করার কারণটি আপনি কীভাবে ডেটাফ্রেমে সূচী করেন। ইন df.iloc[row, column], rowসূচক অবস্থানে 0 এবং columnসূচক অবস্থানে রয়েছে 1। নম্পি এটিকে N মাত্রাগুলিতে সাধারণীকরণ করে, যেখানে অক্ষের দিক দিয়ে চিন্তা করা হয় যে সমষ্টিটি ধসে পড়েছে "সারি-ওয়াইজ" বা "কলাম- ওয়াইজ " এর চেয়ে আরও বেশি অর্থবোধ করতে শুরু করে "।
টম কি।

11
আমি এখনও বিভ্রান্ত বোধ করছি। আমি যদি তা করি df.drop("A", axis = 1)তবে এ কলামটি বাদ পড়বে। এটি "সারি বরাবর" বা "সারি অনুসারে" নয় তবে কলাম এ
ছাড়ছে

5
@ আইটু axis=0মানে প্রতিটি সারি একটি বাল্ক হিসাবে, আমরা কেবল অভ্যন্তরীণ-সারিটির পরিবর্তে ডাটাফ্রেম আন্তঃ-সারিকে ম্যানিপুলেট করতে পারি। axis=1প্রতিটি কলামকে একটি বাল্ক হিসাবে বোঝায়, আমরা কেবলমাত্র অভ্যন্তরীণ কলামের পরিবর্তে ডেটাফ্রেম আন্তঃ কলামটি ম্যানিপুলেট করতে পারি। সুতরাং আপনি যদি ব্যবহার করেন তবে df.drop("A", axis = 1)এটি একটি সম্পূর্ণ কলামটি ফেলে দেবে।
বেলটার

106

এই উত্তরগুলি এটি ব্যাখ্যা করতে সহায়তা করে, তবে এটি এখনও কোনও অ প্রোগ্রামারারের পক্ষে পুরোপুরি স্বজ্ঞাত নয় (যেমন আমার মতো কেউ যিনি ডেটা সায়েন্স কোর্সওয়ার্কের প্রসঙ্গে প্রথমবার পাইথন শিখছেন)। আমি এখনও "বরাবর" বা "প্রতিটি" এর জন্য ক্র্ট থেকে সারি এবং কলামগুলিতে বিভ্রান্তিকর শব্দগুলি ব্যবহার করে দেখতে পাই।

আমার কাছে যে বিষয়টি আরও বেশি বোঝায় তা হ'ল এইভাবে বলা:

  • অক্ষ 0 0 প্রতিটি COLUMN এর সমস্ত ROWS এ কাজ করবে
  • অক্ষ 1 টি প্রতিটি ROW এর সমস্ত COLUMNS এ কাজ করবে

সুতরাং অক্ষ 0 -এর গড় অর্থ প্রতিটি কলামের সমস্ত সারিগুলির গড় হবে এবং অক্ষ 1 এ একটি গড় হবে প্রতিটি সারিতে থাকা সমস্ত কলামের গড়।

শেষ পর্যন্ত এটি @ জাঙ্গক্সাওচেন এবং @ মিশেল হিসাবে একই কথা বলছে, তবে এমনভাবে যা আমার পক্ষে অভ্যন্তরীণ করা সহজ।


আমি মনে করি বিভ্রান্তি প্রতিটি তথাকথিত "আইন" এর জটিলতা থেকে আসে। df.rodna (অক্ষ = 0) প্রথমে প্রতিটি ROW এর সমস্ত COLUMNS চেক করবে এবং তারপরে সেই ROWS কে নাল দিয়ে ফেলে দেবে। অক্ষ শেষ পদক্ষেপের বিষয়ে কথা বলে তবে আমাদের মস্তিষ্ক প্রথম অংশটির দিকে মনোযোগ দেবে।
শন চেন

69

আসুন কল্পনা করুন (আপনি সর্বদা মনে রাখবেন), এখানে চিত্র বর্ণনা লিখুন

পান্ডায়:

  1. অক্ষ = 0 অর্থ "সূচী" বরাবর। এটি একটি সারিবদ্ধ অপারেশন

ধরা যাক, ডেটাফ্রেম 1 এবং ডেটাফ্রেম 2-তে কনটাক্ট () অপারেশন করার জন্য, আমরা ডেটাফ্রেম 1 নেব এবং ডেটাফ্রেম 1 থেকে প্রথম সারিটি নেব এবং নতুন ডিএফের মধ্যে রাখব, তারপরে আমরা ডেটাফ্রেম 1 থেকে অন্য সারিটি বের করে নতুন ডিএফ-তে রাখব, আমরা এই প্রক্রিয়াটি পুনরাবৃত্তি করব আমরা ডেটাফ্রেম 1 এর নীচে পৌঁছে যাই। তারপরে, আমরা ডেটাফ্রেম 2 এর জন্য একই প্রক্রিয়াটি করি।

মূলত, ডেটাফ্রেম 1 এর উপরে ডেটাফ্রেম 2 স্ট্যাকিং বা তদ্বিপরীত।

যেমন একটি টেবিল বা মেঝে বইয়ের গাদা তৈরি

  1. অক্ষ = 1 অর্থ "কলামগুলি" বরাবর। এটি কলাম ভিত্তিক অপারেশন।

ধরুন, ডেটাফ্রেম 1 এবং ডেটাফ্রেম 2-তে কনটাক্ট () ক্রিয়াকলাপ সম্পাদন করার জন্য, আমরা ডেটাফ্রেম 1 এর 1 ম সম্পূর্ণ কলাম (ওরফে 1 ম সিরিজ) বের করে নতুন ডিএফের মধ্যে রাখব, তারপরে আমরা ডেটাফ্রেম 1 এর দ্বিতীয় কলামটি বের করে এটিকে পাশের পাশে রেখে দেব ) , সমস্ত কলাম শেষ না হওয়া পর্যন্ত আমাদের এই অপারেশনটি পুনরাবৃত্তি করতে হবে। তারপরে, আমরা একই প্রক্রিয়াটি ডেটাফ্রেম 2 এ পুনরাবৃত্তি করি। মূলত, পাশাপাশি ডেটা ফ্রেম 2 স্ট্যাকিং।

যেমন বইয়ের শেলফে বই সাজানো।

এটি আরও বেশি, যেহেতু অ্যারে ম্যাট্রিক্সের তুলনায় নেস্টেড এন-ডাইমেনশনাল কাঠামোর প্রতিনিধিত্ব করার জন্য আরও ভাল উপস্থাপনা! সুতরাং যখন আপনি একাধিক মাত্রায় সাধারণীকরণ করেন তখন অক্ষ কীভাবে গুরুত্বপূর্ণ ভূমিকা পালন করে তা নিখরচায় আপনাকে আরও সহায়তা করতে পারে। এছাড়াও, আপনি আসলে যে কোনও এন-ডিমে অ্যারে মুদ্রণ / লিখতে / আঁকতে / কল্পনা করতে পারেন তবে, ম্যাট্রিক্স উপস্থাপনায় (3-মিমি) একই লেখা বা ভিজ্যুয়ালাইজ করা কোনও কাগজে 3-মাত্রার চেয়ে বেশি অসম্ভব।

এখানে চিত্র বর্ণনা লিখুন


6
আমি মনে করি এই উত্তরটি সঠিক। আপনি এটি কল্পনা করা প্রয়োজন। অক্ষ = 0 (অথবা অক্ষ = 'সারি' অনুভূমিক অক্ষ ax অক্ষ = 1 (বা অক্ষ = 'কলাম') অক্ষ হয় it এটি আরও ধরে নিতে, যদি আপনি পান্ডাস পদ্ধতি ড্রপ ব্যবহার করেন, কলাম বা সারিগুলি সরাতে, যদি আপনি উল্লেখ করেন অক্ষ = 1 আপনি কলামগুলি সরিয়ে ফেলবেন you আপনি যদি অক্ষ = 0 নির্দিষ্ট করেন তবে আপনি ডেটাসেট থেকে সারি সরিয়ে ফেলবেন So সুতরাং আমাদের যদি ভ্যারিয়েবল ডিএফ: ডিএফ.ড্রপ (0, অক্ষ = 0) এর কিছু প্যান্ডাস ডেটাফ্রেম থাকে তবে পুরো প্রথম সারিটি সরিয়ে ফেলবে ডেটাসেট ডিএফ.ড্রপ.র ('গ্রেড', অক্ষ = 1) ডেটাসেট থেকে কলাম 'গ্রেড' সরিয়ে ফেলবে আশা করি এটি আরও কিছুটা স্পষ্ট করবে ...
রোবলোব

3
@ রোব্লোব - এখনও বিভ্রান্ত df.DP (n, অক্ষ = 1) একটি কলামে কাজ করে। কেন df.mean (অক্ষ = 1) কোনও কলামে পদক্ষেপ নেয় না?
ম্যাটি

@ মাইটি, প্রথম! আপনার হাত নোংরা করুন! আপনার রেফারেন্সের জন্য, ড্রপ এবং গড়ের জন্য , অক্ষ = 1 উভয়ের জন্য সমান, দয়া করে আপনি যদি আপনার উদাহরণে কিছু বুঝতে না পারেন তবে একটি নতুন প্রশ্ন জিজ্ঞাসা করুন!
অনু

2
@ অানু - হাত নোংরা? ডুপ্লিকেট প্রশ্ন সহ আমাদের এসওকে গোলমাল করার দরকার নেই। আমি নিশ্চিত যে এই বিভ্রান্তি হ্রাস করতে এই পৃষ্ঠায় এক বা একাধিক উত্তর পরিষ্কার করা যেতে পারে। আমি যদি পারতাম তবে নিজেই করতাম, তবে এই মুহুর্তে, কেবলমাত্র সেগুলি কীভাবে ব্যবহার করতে হয় তা আমি জানি। আমি চাই ডেটা পেতে কোন অক্ষটি ব্যবহার করব। তবে কেন বিভ্রান্তি রয়ে গেছে তার অর্থ () এবং ড্রপ () মনে হচ্ছে তারা বিরোধী অক্ষগুলিকে প্রভাবিত করে।
ম্যাটি

2
আমি ভয় করি এই উত্তরটি অবিশ্বাস্যরকম বিভ্রান্তিকর। আপনি সারিগুলিতে অক্ষ হিসাবে 0 হিসাবে অভিনয় করার বিষয়ে কথা বলছেন = 0 তবে আপনি কলামগুলিতে নীচে গিয়ে লাল তীর আঁকেন। আপনি অক্ষের বিষয়ে কথা বলুন = 1 কলামগুলিতে অভিনয় করে, তবুও আপনি একটি সারিতে গিয়ে তীর আঁকেন। যে কেউ এই সিস্টেমটির সাথে এসেছিল সে এটিকে খুব ভালভাবে ভাবেনি।
রকস নিউভেজ

33

axisঅ্যারের মাত্রা বোঝায়, pd.DataFrames এর ক্ষেত্রে axis=0নীচের দিকে নির্দেশিত করা মাত্রা এবং axis=1ডানদিকে নির্দেশ করা একটি is

উদাহরণ: একটি চিন্তা ndarrayআকৃতি সঙ্গে (3,5,7)

a = np.ones((3,5,7))

aএটি একটি ত্রিমাত্রিক ndarray, অর্থাৎ এটিতে 3 টি অক্ষ রয়েছে ("অক্ষ" এটি "অক্ষের বহুবচন")। কনফিগারেশনটি a3 টি টুকরো রুটির মতো দেখাবে যেখানে প্রতিটি স্লাইস 5-বাই -7 মাত্রাযুক্ত। a[0,:,:]0-th স্লাইস a[1,:,:]উল্লেখ করবে , 1-st স্লাইস ইত্যাদি উল্লেখ করবে

a.sum(axis=0)sum()এর 0-th অক্ষের সাথে প্রযোজ্য হবে a। আপনি সমস্ত স্লাইস যোগ করবেন এবং আকারের এক টুকরো দিয়ে শেষ করবেন (5,7)

a.sum(axis=0) সমতুল্য

b = np.zeros((5,7))
for i in range(5):
    for j in range(7):
        b[i,j] += a[:,i,j].sum()

bএবং a.sum(axis=0)উভয় দেখতে হবে

array([[ 3.,  3.,  3.,  3.,  3.,  3.,  3.],
       [ 3.,  3.,  3.,  3.,  3.,  3.,  3.],
       [ 3.,  3.,  3.,  3.,  3.,  3.,  3.],
       [ 3.,  3.,  3.,  3.,  3.,  3.,  3.],
       [ 3.,  3.,  3.,  3.,  3.,  3.,  3.]])

একটি pd.DataFrame, অক্ষ হিসেবে একই ভাবে কাজ করে numpy.array: S axis=0প্রযোজ্য হবে sum()অথবা প্রতিটি কলামের জন্য অন্য কোন হ্রাস ফাংশন।

এনবি @ জাংক্সাওচেনের উত্তরে আমি "সারিগুলির সাথে" এবং "কলামগুলি বরাবর" বাক্যাংশগুলি কিছুটা বিভ্রান্তিকর দেখতে পাই। axis=0"প্রতিটি কলাম বরাবর", এবং axis=1"প্রতিটি সারিতে বরাবর " উল্লেখ করা উচিত ।


1
এটি গৃহীত উত্তরগুলির চেয়ে উত্তম উত্তর - যেহেতু সাফাক সেখানে ব্যবহৃত বাক্যাংশগুলিকে উল্লেখ করেছেন যেহেতু সেখানে খারাপ শব্দ ব্যবহার করা হয়েছে এবং আরও বিভ্রান্তির দিকে নিয়ে যায়।
জাভাদবা

এটি আরও ভাল উত্তর
রবি জি

24

আমার বোঝার সহজ উপায় হ'ল আপনি প্রতিটি কলাম ( axis = 0) বা প্রতিটি সারি ( axis = 1) এর জন্য একটি পরিসংখ্যান গণনা করছেন কিনা তা নিয়ে কথা বলা । আপনি যদি কোনও পরিসংখ্যান গণনা করেন তবে একটি গড় বলুন, axis = 0প্রতিটি কলামের জন্য আপনি সেই পরিসংখ্যান পাবেন। সুতরাং যদি প্রতিটি পর্যবেক্ষণটি একটি সারি হয় এবং প্রতিটি ভেরিয়েবল একটি কলামে থাকে তবে আপনি প্রতিটি ভেরিয়েবলের গড় পাবেন। আপনি যদি সেট করে থাকেন axis = 1তবে আপনি প্রতিটি সারির জন্য আপনার পরিসংখ্যান গণনা করবেন। আমাদের উদাহরণস্বরূপ, আপনি আপনার সমস্ত ভেরিয়েবলগুলি জুড়ে প্রতিটি পর্যবেক্ষণের গড় পাবেন (সম্ভবত আপনি সম্পর্কিত ব্যবস্থাগুলির গড় গড় চান)।

axis = 0: কলাম দ্বারা = কলাম-অনুসারে = সারি বরাবর

axis = 1: কলাম দ্বারা সারিতে = সারি অনুসারে = =


আমি মনে করি "বরাবর" "" জুড়ে "দিয়ে প্রতিস্থাপন করা উচিত। আমার কাছে axis=0কোনও কিছু (উদাহরণস্বরূপ রাস্তা) বয়ে যাওয়ার অর্থ এর উপর স্থির থাকা, তবে যখন আমরা গড়ের গণনা করি তখন আমরা বলার সারিতে থাকি না; বরং আমরা একটি কলামে সমস্ত সারি পেরিয়ে যাই।
হতবুদ্ধি

13

উইকির থেকে টেবিলটি দেখুন। এটি শীর্ষ দশ দেশের জন্য ২০১০ থেকে 2019 পর্যন্ত জিডিপির একটি আইএমএফ অনুমান। এখানে চিত্র বর্ণনা লিখুন

অ্যাক্সিস 1 সমস্ত কলামে প্রতিটি সারির জন্য কাজ করবে
আপনি যদি দশকের দশকে (2010-2019) প্রতিটি দেশগুলির জন্য গড় (গড়) জিডিপি গণনা করতে চান, আপনার করা দরকার df.mean(axis=1),। উদাহরণস্বরূপ, আপনি যদি ২০১০ থেকে 2019 পর্যন্ত মার্কিন যুক্তরাষ্ট্রের গড় জিডিপি গণনা করতে চান,df.loc['United States','2010':'2019'].mean(axis=1)

২. অক্ষটি 0 সমস্ত সারিগুলিতে প্রতিটি কলামের জন্য কাজ করবে
যদি আমি সমস্ত দেশের জন্য প্রতিটি বছরের জন্য গড় (গড়) জিডিপি গণনা করতে চাই, আপনার করা দরকার df.mean(axis=0),। উদাহরণস্বরূপ, আপনি যদি মার্কিন যুক্তরাষ্ট্র, চীন, জাপান, জার্মানি এবং ভারতের জন্য ২০১৫ সালের গড় জিডিপি গণনা করতে চান তবে df.loc['United States':'India','2015'].mean(axis=0)

দ্রষ্টব্য: উপরের কোডটি "কান্ট্রি (বা নির্ভরশীল অঞ্চল)" কলামটি সূচক হিসাবে সেট করার পরে কেবলমাত্র কাজ করবে set_indexপদ্ধতি।


11

প্রোগ্রামিংয়ের দৃষ্টিতে অক্ষটি হল টিপলের আকারের অবস্থান। এখানে একটি উদাহরণ:

import numpy as np

a=np.arange(120).reshape(2,3,4,5)

a.shape
Out[3]: (2, 3, 4, 5)

np.sum(a,axis=0).shape
Out[4]: (3, 4, 5)

np.sum(a,axis=1).shape
Out[5]: (2, 4, 5)

np.sum(a,axis=2).shape
Out[6]: (2, 3, 5)

np.sum(a,axis=3).shape
Out[7]: (2, 3, 4)

অক্ষের মাঝখানে সেই মাত্রাটি সরানো হবে।

মূল প্রশ্নের উল্লেখ করে, ডিএফএফ আকার (1,2)। অক্ষ = 1 ব্যবহার করা হলে আকারটি (1,) এ পরিবর্তিত হবে।


8

পান্ডাসের ডিজাইনার ওয়েস ম্যাককিনি ফিনান্স ডেটা নিয়ে নিবিড়ভাবে কাজ করতেন। কলামগুলি স্টকের নাম এবং দৈনিক দাম হিসাবে সূচক হিসাবে ভাবেন। তারপরে axis=0আপনি এই ফিনান্স ডেটার বিষয়ে সম্মতিতে ডিফল্ট আচরণটি (অর্থাত্ ) কী অনুমান করতে পারেন । axis=1কেবল 'অন্য দিক' হিসাবে বিবেচনা করা যেতে পারে।

উদাহরণস্বরূপ, যেমন পরিসংখ্যান ফাংশন, mean(), sum(), describe(), count()কলাম-অনুযায়ী সব ডিফল্ট কারণ এটা তাদের প্রতিটি স্টক জন্য কি আরো ইন্দ্রিয় তোলে। sort_index(by=)এছাড়াও কলাম ডিফল্ট। fillna(method='ffill')কলাম বরাবর পূরণ করবে কারণ এটি একই স্টক। dropna()সারিতে ডিফল্ট কারণ আপনি সম্ভবত সেইদিনের স্টকটির সমস্ত দাম ফেলে দেওয়ার পরিবর্তে দামটি বাতিল করতে চান।

একইভাবে, বর্গাকার বন্ধনী সূচকগুলি কলামগুলি বোঝায় যেহেতু কোনও দিন বাছাইয়ের পরিবর্তে স্টক বাছাই করা বেশি সাধারণ।


1
আপনার যুক্তিটি সঠিক বলে মনে হচ্ছে তবে এর অর্থ (), যোগফল () এবং অন্যান্য ফাংশনগুলি ডিফল্ট (অক্ষ = 0) এর কাছে হবে যা সারিবদ্ধ এবং উপরে বর্ণিত নয়। এবং সারি অনুসারে আমরা কলাম-ওয়াইড আশা করি এমন আচরণ করে বলে মনে হচ্ছে :) এবং এটি বিভ্রান্তি বলে মনে হচ্ছে।
বিনকব

5

অক্ষ 1 (কলাম), বনাম অক্ষ 0 (সারি) মনে রাখার সহজ উপায়গুলির মধ্যে একটি হল আপনার প্রত্যাশা করা আউটপুট।

  • আপনি যদি প্রতিটি সারির আউটপুট আশা করেন তবে অক্ষ = 'কলাম' ব্যবহার করেন,
  • অন্যদিকে আপনি যদি প্রতিটি কলামের আউটপুট চান তবে আপনি অক্ষ = 'সারি' ব্যবহার করেন।

ধন্যবাদ। এটি, তবে কেবল গণনার জন্য কাজ করে? এটি যেমন pd.concatবা এমন কোনও পদ্ধতির জন্য কাজ করে না df.dropna()যা শনাক্তকরণের ক্ষমতার জন্য কেওয়ার্গ অক্ষটি ব্যবহার করে।
বোভেন লিউ

3

axis=সঠিকভাবে ব্যবহারে সমস্যাটি এটি 2 প্রধান বিভিন্ন ক্ষেত্রে এর ব্যবহারের জন্য:

  1. সঞ্চিত মান গণনা করার জন্য , বা (যেমন বাছাই করা) ডেটা পুনরায় সাজানোর জন্য।
  2. জন্য সাধিত (সঙ্গে "বাজানো") সত্ত্বা (যেমন dataframes )।

এই উত্তরের পিছনে মূল ধারণাটি হ'ল বিভ্রান্তি এড়ানোর জন্য, আমরা একটি নির্দিষ্ট নম্বরটি নির্দিষ্ট করার জন্য একটি নাম বা একটি নাম নির্বাচন করি , যার মধ্যে আরও স্পষ্ট, স্বজ্ঞাত এবং বর্ণনামূলক।

পান্ডাস নুমপির উপর ভিত্তি করে তৈরি, যা গণিতের উপর ভিত্তি করে বিশেষত এন-ডাইমেনশনাল ম্যাট্রিক্সের উপর ভিত্তি করে। ত্রি-মাত্রিক স্থানে গণিতে অক্ষের নাম ব্যবহার করার জন্য এখানে একটি চিত্র রয়েছে:

এখানে চিত্র বর্ণনা লিখুন এই ছবিটি কেবল অক্ষগুলির অর্ডিনাল সংখ্যাগুলি মুখস্থ করার জন্য :

  • 0 এক্স অক্ষের জন্য,
  • 1 Y- অক্ষের জন্য, এবং
  • 2 z- অক্ষের জন্য

Z- অক্ষ জন্য শুধুমাত্র হয় প্যানেল ; ডেটাফ্রেমের জন্য আমরা আমাদের আগ্রহটি সবুজ বর্ণের, এক্স-অক্ষ ( , উল্লম্ব) এবং y- অক্ষ ( , অনুভূমিক) সহ 2-মাত্রিক বেসিক প্লেনটিতে সীমাবদ্ধ করব 01

এখানে চিত্র বর্ণনা লিখুন এটি প্যারামিটারের সম্ভাব্য মান হিসাবে সংখ্যার জন্য সমস্ত axis=

নাম অক্ষ হয় 'index'(আপনি ওরফে ব্যবহার করতে পারেন 'rows') এবং 'columns', এবং এই ব্যাখ্যা জন্য তাই না গুরুত্বপূর্ণ এই নামগুলি এবং পূরণবাচক সংখ্যার মধ্যে সম্পর্ক নেই (অক্ষ এর), যেমন সবাই জানে কি শব্দ "সারি" এবং "কলাম" গড় ( এবং এখানকার প্রত্যেকে - আমি মনে করি - পান্ডাসের "সূচক" শব্দের অর্থ কী তা জানে )।

এবং এখন, আমার পুনরুদ্ধার:

  1. আপনি যদি একটি জমে থাকা মানটি গণনা করতে চান তবে আপনি এটি অক্ষ 0 (বা অক্ষ বরাবর 1 ) বরাবর অবস্থিত মানগুলি থেকে গণনা করতে পারেন - axis=0(বা axis=1) ব্যবহার করুন ।

    একইভাবে, আপনি মানগুলি পুনরায় সাজাতে চাইলে অক্ষটির অক্ষ সংখ্যাটি ব্যবহার করুন , যার সাথে পুনরায় সাজানোর জন্য ডেটা অবস্থিত (যেমন বাছাইয়ের জন্য )।

  2. যদি আপনি চাই প্রতি নিপূণভাবে (যেমন CONCATENATE ) সত্ত্বা (যেমন dataframes ) - ব্যবহারের axis='index'(সমার্থক: axis='rows') অথবা axis='columns'নির্দিষ্ট করার ফলে পরিবর্তন - সূচক ( সারি ) অথবা কলাম যথাক্রমে।
    ( কনটেনেটেটিংয়ের জন্য , আপনি যথাক্রমে দীর্ঘতর সূচক (= আরও সারি) , বা আরও কলামগুলি পাবেন ))


এটি সবচেয়ে ভাল উত্তর, এবং সম্ভবত অপের দ্বারা সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত!
আঞ্জেকে

2

এটি @ সাফাকের উত্তরের ভিত্তিতে তৈরি। পান্ডাস / নিম্পিতে অক্ষগুলি বোঝার সর্বোত্তম উপায় হ'ল 3 ডি অ্যারে তৈরি করা এবং 3 টি পৃথক অক্ষ বরাবর যোগফলের ফলাফলটি পরীক্ষা করা।

 a = np.ones((3,5,7))

একটি হবে:

    array([[[1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.]],

   [[1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.]],

   [[1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.],
    [1., 1., 1., 1., 1., 1., 1.]]])

এখন প্রতিটি অক্ষের সাথে অ্যারের উপাদানের যোগফল পরীক্ষা করে দেখুন:

 x0 = np.sum(a,axis=0)
 x1 = np.sum(a,axis=1)
 x2 = np.sum(a,axis=2)

আপনাকে নিম্নলিখিত ফলাফলগুলি দেবে:

   x0 :
   array([[3., 3., 3., 3., 3., 3., 3.],
        [3., 3., 3., 3., 3., 3., 3.],
        [3., 3., 3., 3., 3., 3., 3.],
        [3., 3., 3., 3., 3., 3., 3.],
        [3., 3., 3., 3., 3., 3., 3.]])

   x1 : 
   array([[5., 5., 5., 5., 5., 5., 5.],
   [5., 5., 5., 5., 5., 5., 5.],
   [5., 5., 5., 5., 5., 5., 5.]])

  x2 :
   array([[7., 7., 7., 7., 7.],
        [7., 7., 7., 7., 7.],
        [7., 7., 7., 7., 7.]])

2

আমি এইভাবে বুঝতে পারি:

বলুন যদি আপনার অপারেশনের জন্য ডেটা ফ্রেমে বাম থেকে ডানে / ডানে বাম দিকে ট্র্যাভারিংয়ের প্রয়োজন হয় তবে আপনি দৃশ্যত কলামগুলি মার্জ করছেন ie আপনি বিভিন্ন কলামে অপারেটিং করছেন। এটি অক্ষ = 1

উদাহরণ

df = pd.DataFrame(np.arange(12).reshape(3,4),columns=['A', 'B', 'C', 'D'])
print(df)
   A  B   C   D
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11 

df.mean(axis=1)

0    1.5
1    5.5
2    9.5
dtype: float64

df.drop(['A','B'],axis=1,inplace=True)

    C   D
0   2   3
1   6   7
2  10  11

এখানে লক্ষ্য করুন আমরা কলামগুলিতে অপারেট করছি

একইভাবে, যদি আপনার অপারেশনটির উপরে ডেটা ফ্রেমে শীর্ষ থেকে নীচে / নীচে থেকে ট্র্যাভারিংয়ের প্রয়োজন হয় তবে আপনি সারিগুলি মার্জ করছেন। এটি অক্ষ = 0


1

অক্ষ = 0 এর অর্থ নিচ পর্যন্ত অক্ষ = 1 এর অর্থ বাম থেকে ডান

sums[key] = lang_sets[key].iloc[:,1:].sum(axis=0)

প্রদত্ত উদাহরণটি কলাম == কীতে সমস্ত ডেটা যোগ করছে।


0

আমার চিন্তাভাবনা: অক্ষ = এন, যেখানে এন = 0, 1 ইত্যাদির অর্থ ম্যাট্রিক্সটি ax অক্ষের সাথে ধসে গেছে (ভাঁজ করা)। সুতরাং একটি 2 ডি ম্যাট্রিক্সে, যখন আপনি 0 (সারি) বরাবর ধসে পড়েছেন, আপনি সত্যিই একবারে একটি কলামে অপারেট করছেন। একইভাবে উচ্চতর অর্ডার ম্যাট্রিক্সের জন্য।

এটি ম্যাট্রিক্সের একটি মাত্রার সাধারণ রেফারেন্সের মতো নয়, যেখানে 0 -> সারি এবং 1 -> কলাম। একইভাবে এন ডাইমেনশন অ্যারেতে অন্যান্য মাত্রার জন্য।


0

আমি পান্ডাদের নবাগত। তবে আমি এইভাবে পান্ডে অক্ষ বুঝতে পারি:


অক্ষ কনস্ট্যান্ট ভ্যারিংয়ের দিকনির্দেশ


0 কলাম সারি নিচের দিকে |


ডান দিকে 1 সারি কলাম ->


সুতরাং কোনও কলামের গড় গণনা করতে, সেই নির্দিষ্ট কলামটি হওয়া উচিত ধ্রুব তবে এর অধীনে থাকা সারিগুলি পরিবর্তন করতে পারে (পরিবর্তিত হতে পারে) তাই এটি অক্ষ = 0।

একইভাবে, একটি সারির গড় গণনা করতে, সেই নির্দিষ্ট সারিটি স্থির থাকে তবে এটি বিভিন্ন কলাম (ভিন্ন) , অক্ষ = 1 এর মধ্য দিয়ে যেতে পারে ।


0

আমি মনে করি এটি বোঝার আরও একটি উপায় আছে।

এনপি.আরয়ের জন্য, আমরা যদি কলামগুলি বাদ দিতে চাই তবে আমরা অক্ষ = 1 ব্যবহার করি; যদি আমরা সারিগুলি বাদ দিতে চাই, আমরা অক্ষ = 0 ব্যবহার করি।

np.mean(np.array(np.ones(shape=(3,5,10))),axis = 0).shape # (5,10)
np.mean(np.array(np.ones(shape=(3,5,10))),axis = 1).shape # (3,10)
np.mean(np.array(np.ones(shape=(3,5,10))),axis = (0,1)).shape # (10,)

পান্ডাস অবজেক্টের axis = 0জন্য, সারি অনুসারে অপারেশন এবং axis = 1কলাম-ওয়াইজ অপারেশনকে বোঝায়। এটি numpyসংজ্ঞা অনুসারে পৃথক, আমরা numpy.doc এবং pandas.doc থেকে সংজ্ঞা পরীক্ষা করতে পারি


0

আমি স্পষ্টভাবে 'সারি অনুসারে' বা 'কলামগুলি বরাবর' ব্যবহার করা এড়াব, যেহেতু লোকেরা তাদের সঠিকভাবে ভুল উপায়ে ব্যাখ্যা করতে পারে।

সাদৃশ্য প্রথমে। স্বজ্ঞাতভাবে, আপনি এটি আশা করতে হবেpandas.DataFrame.drop(axis='column') এন কলামগুলি থেকে একটি কলাম কমেছে এবং আপনাকে (এন - 1) কলাম দেয়। সুতরাং আপনি আপাতত সারিগুলিতে কোন মনোযোগ দিতে পারবেন না (এবং আপনার ইংরেজি অভিধান থেকে 'সারি' শব্দটি সরিয়ে ফেলুন)) তদ্বিপরীত,drop(axis='row') সারিগুলিতে কাজ করে।

একই পথে, sum(axis='column') একাধিক কলামে কাজ করে এবং আপনাকে 1 টি কলাম দেয়। একইভাবে, sum(axis='row')1 সারিতে ফলাফল। এটি সংখ্যার তালিকাকে একক সংখ্যায় হ্রাস করে সংজ্ঞাটির সহজতম ফর্মের সাথে সামঞ্জস্যপূর্ণ।

সাধারণভাবে, সাথে axis=column আপনি কলামগুলি দেখেন, কলামগুলিতে কাজ করেন এবং কলাম পান। সারি ভুলে যান।

সঙ্গে axis=row , দৃষ্টিভঙ্গি পরিবর্তন করুন এবং সারিগুলিতে কাজ করুন।

0 এবং 1 'সারি' এবং 'কলাম' এর কেবলমাত্র উপাধি। এটি ম্যাট্রিক্স ইনডেক্সিংয়ের কনভেনশন।


অক্ষটি = 'কলামগুলি' ব্যবহার করে এই ব্যাখ্যাটি সঠিক নয় you আপনাকে কলাম দেয় না।
ব্যবহারকারী 3065757

@ user3065757 মন্তব্যের জন্য ধন্যবাদ। আপনি উদাহরণ দিয়ে বিস্তারিত বলতে পারেন?
lqu

আপনি কাকে জবাব দিচ্ছেন তা নয়, তবে যখন আমি pd.concatআপনার ব্যাখ্যাটি বের করার চেষ্টা করি তখন এটি কার্যকর হয় না। আপনি দয়া করে 2 টি অক্ষের সাথে সমবিত আচরণটি ব্যাখ্যা করতে পারেন? ধন্যবাদ।
বোভেন লিউ

@ বোভেনলিউ আপনি যখন আপেলের 2 টি তালিকা একত্রী করেন, তখন আপনি আরও 1 টি আপেল তালিকা পাবেন (তবে বড় আপেল নয়)। আপনি যখন সারিগুলি সংহত করেন (অক্ষ = 0), আপনি আরও সারি পাবেন (আর সারি নয়); যখন আপনি কলামগুলি (অক্ষ = 1) সমাপ্ত করেন, আপনি আরও কলাম পান (আর কলাম নয়) not ধারণাটি হল অক্ষ = 0 একটি সারির অভ্যন্তরে নয়, সারিগুলির মধ্যে পরিচালনা করে।
lqu

0

আমি গত ঘন্টা ধরে অক্ষটিও বের করার চেষ্টা করছিলাম। উপরের সমস্ত উত্তরগুলির ভাষা এবং ডকুমেন্টেশন মোটেই সহায়ক নয়।

আমি এখন বুঝতে পেরেছি প্রশ্নের উত্তরটির জন্য, পান্ডসে অক্ষ = 1 বা 0 এর অর্থ ফাংশন প্রয়োগ করার সময় কোন অক্ষের শিরোনাম আপনি ধ্রুবক বজায় রাখতে চান।

দ্রষ্টব্য: আমি যখন শিরোনাম বলি, তখন আমি সূচকের নামগুলি বুঝি

আপনার উদাহরণ প্রসারিত:

+------------+---------+--------+
|            |  A      |  B     |
+------------+---------+---------
|      X     | 0.626386| 1.52325|
+------------+---------+--------+
|      Y     | 0.626386| 1.52325|
+------------+---------+--------+

অক্ষ = 1 = কলামগুলির জন্য: আমরা কলামগুলির শিরোনামকে অবিচ্ছিন্ন রাখি এবং ডেটা পরিবর্তন করে গড় ফাংশনটি প্রয়োগ করি। প্রদর্শনের জন্য, আমরা কলামগুলির শিরোনামগুলি স্থির রাখি:

+------------+---------+--------+
|            |  A      |  B     |

এখন আমরা A এবং B মানগুলির একটি সেট তৈরি করি এবং তারপরে এর অর্থটি সন্ধান করি

|            | 0.626386| 1.52325|  

তারপরে আমরা এ এবং বি মানের পরবর্তী সেট স্থাপন করি এবং এর মাধ্যমটি পাই

|            | 0.626386| 1.52325|

একইভাবে অক্ষ = সারিগুলির জন্য, আমরা সারি শিরোনামকে অবিচ্ছিন্ন রাখি এবং ডেটা পরিবর্তন করি: প্রদর্শন করতে প্রথমে সারি শিরোনামগুলি ঠিক করুন:

+------------+
|      X     |
+------------+
|      Y     |
+------------+

এখন এক্স এবং ওয়াইয়ের প্রথম মান সেট করুন এবং তারপরে এর গড়টি সন্ধান করুন

+------------+---------+
|      X     | 0.626386
+------------+---------+
|      Y     | 0.626386
+------------+---------+

তারপরে X এবং Y মানের পরবর্তী সেট স্থাপন করুন এবং তারপরে এর অর্থটি সন্ধান করুন:

+------------+---------+
|      X     | 1.52325 |
+------------+---------+
|      Y     | 1.52325 |
+------------+---------+

সংক্ষেপে,

যখন অক্ষ = কলাম হয়, আপনি কলামের শিরোনামগুলি ঠিক করেন এবং ডেটা পরিবর্তন করেন যা বিভিন্ন সারি থেকে আসে।

অক্ষ = সারি যখন, আপনি সারি শিরোনাম ঠিক করে এবং ডেটা পরিবর্তন করেন যা বিভিন্ন কলাম থেকে আসে।


0

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

অক্ষ = 1, এটি সমষ্টিটিকে সারসংক্ষেপ অনুযায়ী দেবে, কিপডিমগুলি = সত্য 2D মাত্রা বজায় রাখবে। আশা করি এটি আপনাকে সহায়তা করবে।


ওপি নয়, ধন্যবাদ। আমি মনে করি পাণ্ডার ডকুমেন্টারে অক্ষ = 1 কলামের সাথে এই সম্পর্কে লোকেরা যে বিভ্রান্তি সৃষ্টি করেছে তার বেশিরভাগ অংশ। তবে, এখানে এটি 'সারি-ভিত্তিক' গণনা করছে।
বোভেন লিউ

0

এখানে অনেক উত্তর আমাকে অনেক সাহায্য করেছে!

axisপাইথন এবং MARGINআর এর মতো বিভিন্ন আচরণের কারণে আপনি বিভ্রান্ত হয়ে পড়েন (যেমন applyফাংশনটির মতো), আপনি একটি ব্লগ পোস্ট খুঁজে পেতে পারেন যা আমি আগ্রহী লিখেছি: https://accio.github.io/pramramming/2020/05/ 19 / নপি-পান্ডাস-অক্ষ html

সংক্ষেপে:

  • তাদের আচরণগুলি দ্বি-মাত্রিক অ্যারেগুলির চেয়ে ত্রি-মাত্রিক অ্যারে দিয়ে বোঝা সহজতর।
  • পাইথন প্যাকেজ numpyএবংpandas অ্যাক্সেস অক্ষের প্যারামিটারটি অ্যারে [0, 0, ..., i, ..., 0] আকারে আনা যেতে পারে এমন সমস্ত মানগুলির গড় গণনা করার জন্য প্রকৃতপক্ষে আঙ্গুল নির্দিষ্ট করে সমস্ত সম্ভাব্য মান। I স্থির অবস্থানের সাথে প্রক্রিয়াটি পুনরাবৃত্তি হয় এবং অন্যান্য মাত্রাগুলির সূচকগুলি একের পর এক হয় (সর্বাধিক ডানদিকের উপাদান থেকে)। ফলাফলটি একটি এন-১-মাত্রিক অ্যারে।
  • আর-তে, মার্জিনস পরামিতি applyফাংশনটি অ্যারে আকারে আনা যায় এমন সমস্ত মানগুলির গড় গণনা করতে দেয় [, ..., i, ...,] যেখানে আমি সমস্ত সম্ভাব্য মানগুলির মধ্য দিয়ে পুনরাবৃত্তি করি। সমস্ত আই মানগুলি পুনরাবৃত্তি করা হলে প্রক্রিয়াটি পুনরাবৃত্তি হয় না। অতএব, ফলাফলটি একটি সাধারণ ভেক্টর।

-6

অ্যারেগুলি তথাকথিত অক্ষ = 0 এবং সারিগুলি উল্লম্ব বনাম অক্ষ = 1 এবং কলামগুলি অনুভূমিকভাবে অবস্থান সহ ডিজাইন করা হয়েছে। অক্ষটি অ্যারের মাত্রা বোঝায়। চিত্রণ


axis=0প্রতিটি সারিটি একটি বাল্ক হিসাবে বোঝায়, আমরা কেবল অভ্যন্তরীণ-সারিটির পরিবর্তে ডেটাফ্রেম আন্তঃ-সারিকে ম্যানিপুলেট করতে পারি। axis=1প্রতিটি কলামকে একটি বাল্ক হিসাবে বোঝায়, আমরা কেবলমাত্র অভ্যন্তরীণ কলামের পরিবর্তে ডেটাফ্রেম আন্তঃ কলামটি ম্যানিপুলেট করতে পারি।
বেলটার

5
এই পৃষ্ঠার প্রায় সমস্ত বর্ণনানুসারে (এবং জুপিরের পান্ডাসের সাথে একটি দ্রুত পরীক্ষা অনুসারে) ঠিক এইভাবে ভুল পথে নয়?
মার্ক লিয়্যানেজ

2
এটা ঠিক বিপরীত। দয়া করে আপনার উত্তরটি সংশোধন করুন।
সুমিত পোখরেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.