সুন্দর একটি পুরো পান্ডা সিরিজ / ডেটা ফ্রেম মুদ্রণ


649

আমি টার্মিনালে সিরিজ এবং ডেটা ফ্রেমগুলির সাথে অনেক কাজ করি। __repr__সিরিজের জন্য ডিফল্ট কিছু মাথা এবং লেজের মান সহ একটি হ্রাস করা নমুনা দেয়, তবে বাকিটি অনুপস্থিত।

পুরো সিরিজ / ডেটাফ্রেমকে প্রিন্ট করার জন্য কি কোনও অন্তর্নির্মিত উপায় আছে? আদর্শভাবে, এটি যথাযথ প্রান্তিককরণ, সম্ভবত কলামগুলির মধ্যে সীমানা এবং বিভিন্ন কলামগুলির জন্য রঙ-কোডিং সমর্থন করবে।


19
হ্রাস করা আউটপুট হ'ল ডিফল্ট বিকল্পগুলির কারণে যা আপনি ব্যবহার করে পরিবর্তন করতে পারেন pd.set_option('display.max_rows', 1000)উদাহরণস্বরূপ, রঙটি অন্য কিছু I আমি মনে করি না এটি একেবারে অন্তর্নির্মিত।
এডচাম

2
@ এডচাম: ধন্যবাদ, আমি এই সম্পর্কে জানতাম display.max_rows, সমস্যাটি হ'ল বেশিরভাগ সময় আমি আউটপুট কেটে যেতে চাই। এটি কেবল মাঝে মধ্যেই পুরো আউটপুটটি দেখতে চাই। আমি বিকল্পটি খুব উচ্চ মানের সেট করতে পারি, ডিফল্টটি ব্যবহার করতে পারি __repr__, তারপরে মানটি ফিরিয়ে দিতে পারি, তবে এটি কিছুটা জটিল মনে হয়, এবং আমি সেই ক্ষেত্রে নিজের প্রিটি-প্রিন্ট ফাংশনটিও লিখতে পারি।
ডান পিল

1
@ এডচাম: রঙ সম্পর্কিত - এটি একটি রঙিন টার্মিনাল, সুতরাং প্রতিটি সারি আলাদা রঙে মুদ্রিত করা ভাল, একে অপরের থেকে মানগুলি সহজেই আলাদা করতে ভাল লাগবে। পান্ডস আইপথনের সাথে ভাল কাজ করে, যা রঙ সহ - উন্নত টার্মিনাল বৈশিষ্ট্যগুলি ব্যবহার করে তাই আমি ভাবছিলাম যে পান্ডাদের কিছু রঙ করার ক্ষমতা আছে কিনা।
ডান পিল

1
আমি আইপিথন নোটবুকে আইপিথনের পরিবর্তে টার্মিনাল শেল হিসাবে পান্ডাস ব্যবহার করি, আমি রঙিনকে set_optionসমর্থন করে এমন কোনও বিকল্প দেখতে পাচ্ছি না , এটি কিছু সিএসএস বা আউটপুট বিন্যাস প্রয়োগ করার জন্য প্লাগইন হিসাবে কিছু করা যেতে পারে maybe আপনি কেবল
এটিই

উত্তর:


861

option_contextএক বা একাধিক বিকল্পের সাহায্যে আপনি এটি ব্যবহার করতে পারেন :

with pd.option_context('display.max_rows', None, 'display.max_columns', None):  # more options can be specified also
    print(df)

এটি স্বয়ংক্রিয়ভাবে বিকল্পগুলি তাদের পূর্ববর্তী মানগুলিতে ফিরিয়ে দেবে।

আপনি যদি জুপিটার-নোটবুকে কাজ করে থাকেন তবে এর display(df)পরিবর্তে print(df)ব্যবহার করে জুপিটার সমৃদ্ধ ডিসপ্লে লজিক ব্যবহার করা হবে (এর মতো)


2
ধন্যবাদ! নোট করুন যে সর্বাধিক মানগুলি Noneসেগুলিকে বন্ধ করতে সেট করা। ব্যবহার with pd.option_context()বিকল্প নথি কি খুব পরিষ্কারভাবে এবং স্পষ্টভাবে চলছে আর কীভাবে ফর্ম্যাটিং যে আকাঙ্ক্ষিত হতে পারে যেমন ব্যবহার আউটপুটে অন্যান্য পরিবর্তন অর্জনে স্পষ্ট করে তোলে precision, max_colwidth, expand_frame_repr, colheader_justify, date_yearfirst, encoding, এবং অনেক অনেক বেশি: pandas.pydata.org/pandas -ডোকস / স্থিতিশীল /
অপশনস html

37
যে কারও অবাক হওয়ার জন্য: জুপিটার ব্যবহার display(df)করার সময় , এর পরিবর্তে ব্যবহার করুনprint(df)
tsvikas

3
3 এখানে প্রতিনিধিত্বকারী কি?
মোনা জালাল

1
যদি ডেটাফ্রেমটি সত্যই বড় হয় তবে এটি অস্থায়ীভাবে .csv হিসাবে লিখতে এবং জুপিটার ল্যাবের দ্রুত সিএসভি দর্শক
ড্যান

। অপশন_কন্টেক্সট প্যারামটিকে তার ডিফল্ট মান হিসাবে সেট করার জন্য প্রদর্শন.ম্যাক্স_ক্লোলমগুলির জন্য '3' 'কোনও নয়' হওয়া উচিত। সংশোধন করা হয়েছে।
ট্রুটান

605

সেটিংস হ্যাক করার দরকার নেই। একটি সহজ উপায় আছে:

print(df.to_string())

1
আপনার কয়টি কলাম আছে? আমি ১৩০০ কলামের সাথে চেক করেছি এবং এটি দুর্দান্ত কাজ করেছে: স্ট্রিং আমদানি ascii_letters df = pd.DataFrame (ডেটা = [[0] * 1326]), সূচক = [0], কলামগুলি [[a + b) a এর জন্য বি, সংমিশ্রনের জন্য (ascii_letters, 2)])
আন্দ্রে শোখিন

11
ব্যবহার with pd.option_context()বিকল্প নথি কি আরো অনেক কিছু স্পষ্ট এবং স্পষ্টভাবে চলছে আর কীভাবে ফর্ম্যাটিং যে আকাঙ্ক্ষিত হতে পারে ব্যবহার যেমন আউটপুটে অন্যান্য পরিবর্তন অর্জনে স্পষ্ট করে তোলে precision, max_colwidth, expand_frame_repr, colheader_justify, date_yearfirst, encoding, এবং অনেক অনেক বেশি: pandas.pydata.org/ পান্ডাস-ডকস / স্থিতিশীল /
অপশনস html

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

9
প্রশ্নকারী একটি "সুন্দর-মুদ্রণ" সমাধানের জন্য অনুরোধ করেছিলেন। এটা না । এটি যদি জপিটার নোটবুকের মধ্যে ব্যবহার করা হয় তবে বিল্ট-ইন চমত্কার প্রদর্শনটি মোটেই ব্যবহৃত হবে না। pd.set_option('display.max_rows', None)মুদ্রণের ঠিক আগে ব্যবহার করা ভাল df
এলএস

@LS একটি পাইথন ৩.x জুপিটার নোটবুকে pd.set_option ('display.max_rows', काहीही নয়) এবং df.to_string () উভয়ই পরীক্ষা করেছে এবং মুদ্রিত হওয়ার পরে তারা একই আউটপুট তৈরি করেছিল। যদি উপরের উত্তরটি পূর্ববর্তী সংস্করণগুলির জন্য কাজ না করে তবে তা এখনই করে।
এইচ ফ্রয়েজ

166

অবশ্যই, যদি এটি প্রচুর আসে তবে এটির মতো একটি ফাংশন তৈরি করুন। এমনকি আপনি আইপিথন শুরু করার সময় এটি লোড করার জন্য এমনকি কনফিগার করতে পারেন: https://ipython.org/ipython-doc/1/config/overview.html

def print_full(x):
    pd.set_option('display.max_rows', len(x))
    print(x)
    pd.reset_option('display.max_rows')

রঙ করার ক্ষেত্রে, রঙগুলির সাথে খুব বেশি বিস্তৃত হওয়া আমার পক্ষে প্রতিক্রিয়াশীল শোনায় তবে বুটস্ট্র্যাপের.table-striped মতো ভালো কিছু হবে বলে আমি সম্মত । আপনি এই বৈশিষ্ট্যটির পরামর্শ দেওয়ার জন্য সর্বদা একটি সমস্যা তৈরি করতে পারেন


5
লিঙ্কটি মারা গেছে। সম্ভবত এটি আইপিথন.আর . / পিপথন- ডক / দেব / কনফিগ / সিন্টোর এইচটিএমএল হওয়া উচিত ?
ostrokach

2
এটি দুর্দান্ত হবে যদি কেউ, কেউ, এমনকি লেখক, লিঙ্কটি যাচাই করতে এবং ঠিক করতে পারে এবং এই মন্তব্যগুলি অপ্রচলিত হিসাবে পতাকাঙ্কিত করতে পারে।
হারুন হলের

এটি খারাপ, কারণ এটি ধরে নিয়েছে যে মুদ্রণ ক্রিয়াকলাপের আগে বিকল্পটি ডিফল্টতে সেট করা হয়েছিল যা সম্ভবত প্রয়োজন হয় না এবং তাই অপ্রত্যাশিত আচরণের দিকে পরিচালিত করে। সাথে বিকল্প প্রসঙ্গ ব্যবহার সঙ্গে বিবৃতি আরো জোরালো বিকল্প এবং কিছু যে সামনে ছিল প্রত্যাবর্তন করবে।
inVader

104

কনডেক্সট ম্যানেজার ব্যবহারের বিকল্প হিসাবে পান্ডাস আমদানির পরে, পুরো ডেটাফ্রেমগুলি প্রদর্শনের জন্য এই জাতীয় বিকল্পগুলি সেট করুন :

pd.set_option('display.max_columns', None)  # or 1000
pd.set_option('display.max_rows', None)  # or 1000
pd.set_option('display.max_colwidth', -1)  # or 199

দরকারী বিকল্পগুলির সম্পূর্ণ তালিকার জন্য, দেখুন:

pd.describe_option('display')

1
এটি যুক্ত করার জন্য ধন্যবাদ। যদি আপনি একাধিক ডেটাফ্রেম প্রদর্শন করতে চান তবে প্রতিটি একক ডেটাফ্রেমের প্রকৃত দৈর্ঘ্যের চেয়ে "কিছুই নয়" is
ডিমেট

5
@ করম্প্পো কিছু বিকল্পের জন্য আপনার সম্পূর্ণ উপস্থাপনা চাইলে -1পরিবর্তে আপনার মান ব্যবহার করা উচিতNone
লুসিডিয়ান

display.বিকল্প নামটিতে উপসর্গ করা প্রয়োজনীয় বলে মনে হচ্ছে না। উদাহরণস্বরূপ, set_option('max_columns')সমানভাবে ভাল কাজ করে।
একিউম্যানাস

অনেক অনেক ধন্যবাদ :)
ওরিসিরিস দে জং

45

ট্যাবুলেট প্যাকেজটি ব্যবহার করুন:

pip install tabulate

এবং নিম্নলিখিত উদাহরণ ব্যবহার বিবেচনা করুন:

import pandas as pd
from io import StringIO
from tabulate import tabulate

c = """Chromosome Start End
chr1 3 6
chr1 5 7
chr1 8 9"""

df = pd.read_table(StringIO(c), sep="\s+", header=0)

print(tabulate(df, headers='keys', tablefmt='psql'))

+----+--------------+---------+-------+
|    | Chromosome   |   Start |   End |
|----+--------------+---------+-------|
|  0 | chr1         |       3 |     6 |
|  1 | chr1         |       5 |     7 |
|  2 | chr1         |       8 |     9 |
+----+--------------+---------+-------+

একটি পিডি.সেসরিজ প্রিন্ট করার সময় টবুলেটটি হাইওয়াইরে যায়।
এলিউ

2
@ এলিউ তথ্যের জন্য ধন্যবাদ আপনার সবসময়েই রয়েছেpd_series.to_frame()
আনফুন বিড়াল

20

আপনি যদি আইপথন নোটবুক (বৃহস্পতি) ব্যবহার করেন। আপনি এইচটিএমএল ব্যবহার করতে পারেন

from IPython.core.display import HTML
display(HTML(df.to_html()))

1
অন্যান্য সমাধানের সাথে তুলনা করার জন্য দয়া করে আউটপুটটি দেখান, টিএনএক্স।
vwvan

7
এটির সাথে একটি বড় ডেটাফ্রেম দেখানোর চেষ্টা করতে সাবধান হন। আপনার .ipyndb ফাইলে কাঁচা কোডটি সম্পাদনা না করাতে আপনি স্মৃতিশক্তি হারিয়ে ফেলেছেন এবং আপনার নোটবুকটি আর কখনও খুলতে পারবেন না। সত্য গল্প;)
এফএলবি কার্নেল

এটি আমার জন্য সেরা বিকল্প। টেবিলটি পুরো রঙের সাথে প্রদর্শিত হবে। সুন্দর!
ওলয়েড

20

ব্যবহার pd.options.display

এই উত্তরটি লুসিডিয়ান দ্বারা পূর্বের উত্তরের একটি প্রকরণ । এটি কোডটি ব্যবহার এড়িয়ে আরও পঠনযোগ্য করে তোলে set_option

কনডেক্সট ম্যানেজার ব্যবহারের বিকল্প হিসাবে পান্ডাস আমদানির পরে, বড় ডেটাফ্রেমগুলি প্রদর্শন করার জন্য এই জাতীয় বিকল্পগুলি সেট করুন :

def set_pandas_display_options() -> None:
    # Ref: https://stackoverflow.com/a/52432757/
    display = pd.options.display

    display.max_columns = 1000
    display.max_rows = 1000
    display.max_colwidth = 199
    display.width = None
    # display.precision = 2  # set as needed

set_pandas_display_options()

এর পরে, আপনি অন্যথায় অন্যথায় অন্যথায় display(df)বা dfঅন্যথায় নোটবুক ব্যবহার করে বা কেবলমাত্র ব্যবহার করতে পারেন print(df)

ব্যবহার to_string

পান্ডাস 0.25.3 রয়েছে DataFrame.to_stringএবং Series.to_stringপদ্ধতি যা বিন্যাস বিকল্পগুলি গ্রহণ করে।

ব্যবহার to_markdown

আপনার যা দরকার তা মার্কডাউন আউটপুট হলে পান্ডাস 1.0.0 রয়েছে DataFrame.to_markdownএবং Series.to_markdownপদ্ধতিগুলি।

ব্যবহার to_html

আপনার যা প্রয়োজন তা যদি এইচটিএমএল আউটপুট হয় তবে পান্ডাসের 0.25.3 এর একটি DataFrame.to_htmlপদ্ধতি রয়েছে তবে একটি নয় Series.to_html। লক্ষ্য করুন, একটি যে Seriesহতে পারে রূপান্তরিত একটি থেকে DataFrame


হ্যাঁ সেটআপের পরিবর্তে জুপিটারে প্রদর্শনের জন্য এটি আরও ভাল মার্জিত উপায় হিসাবে দেখা যায়। প্রদর্শিত আউটপুট প্রান্তিককরণ বাম উপায় আছে? প্রদর্শিত ডেটাফ্রেমের ডান সারিগুলি ডিফল্টরূপে প্রান্তিক করা হয়।
ভিনসিনরাউ


3

আপনি নীচের পদ্ধতিটি ব্যবহার করে এটি অর্জন করতে পারেন। শুধু মোট নম্বর পাস। আর্গুমেন্ট হিসাবে ডেটাফ্রেমে উপস্থিত কলামগুলির

'Display.max_columns'

যেমন:

df= DataFrame(..)
with pd.option_context('display.max_rows', None, 'display.max_columns', df.shape[1]):
    print(df)

-1

ডিসপ্লে () ফাংশনটি ব্যবহার করে দেখুন। এটি স্বয়ংক্রিয়ভাবে অনুভূমিক এবং উল্লম্ব স্ক্রোল বারগুলি ব্যবহার করবে এবং এর সাহায্যে আপনি মুদ্রণ () ব্যবহার করার পরিবর্তে সহজেই বিভিন্ন ডেটাসেট প্রদর্শন করতে পারেন।

display(dataframe)

প্রদর্শন () যথাযথ প্রান্তিককরণ সমর্থন করে।

তবে আপনি যদি ডেটাসেটটিকে আরও সুন্দর করতে চান তবে পরীক্ষা করতে পারেন pd.option_context()। স্পষ্টভাবে ডেটাফ্রেম দেখানোর জন্য এটির প্রচুর বিকল্প রয়েছে।

দ্রষ্টব্য - আমি জুপিটার নোটবুকগুলি ব্যবহার করছি।

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