পান্ডাস ডেটাফ্রেমের জন্য প্রথম কয়েকটি লাইন পড়ার উপায়


104

সময়ের আগে লাইনগুলির দৈর্ঘ্য না জেনে কোনও ফাইলের read_csvপ্রথম nলাইনগুলি পড়ার জন্য কি অভ্যন্তরীণ কোনও উপায় আছে ? আমার কাছে একটি বড় ফাইল রয়েছে যা পড়তে দীর্ঘ সময় লাগে এবং মাঝে মাঝে কেবলমাত্র তার প্রথম নমুনা পেতে 20 লাইন ব্যবহার করতে চান (এবং পুরো জিনিসটি লোড না করে এটির মাথা নিতে পছন্দ করেন না)।

আমি যদি মোট লাইনগুলির সংখ্যা জানতাম তবে আমি এর মতো কিছু করতে পারি footer_lines = total_lines - nএবং skipfooterকীওয়ার্ড আরগটিতে এটি পাস করতে পারি । আমার বর্তমান সমাধানটি হ'ল nপাইথনটির সাথে প্রথম লাইনগুলি ম্যানুয়ালি দখল করা এবং স্ট্রিংআইও এটি পান্ডাসের কাছে:

import pandas as pd
from StringIO import StringIO

n = 20
with open('big_file.csv', 'r') as f:
    head = ''.join(f.readlines(n))

df = pd.read_csv(StringIO(head))

এটি খুব খারাপ নয়, তবে কীওয়ার্ড বা কোনও কিছুর সাহায্যে আরও সংক্ষিপ্ত, 'প্যান্ডাসিক' (?) উপায় আছে?


4
শেষ এন লাইনগুলি কীভাবে এই এসও পোস্টটি
চেকআউটটি

7
আপনি কি "প্যান্ডাস্টিক" বলতে চাইছেন? :)
1 ''

উত্তর:


189

আমি মনে করি আপনি nrowsপ্যারামিটারটি ব্যবহার করতে পারেন । দস্তাবেজগুলি থেকে :

nrows : int, default None

    Number of rows of file to read. Useful for reading pieces of large files

যা দেখে মনে হচ্ছে। স্ট্যান্ডার্ড বড় টেস্ট ফাইলগুলির মধ্যে একটি (988504479 বাইট, 5344499 লাইন):

In [1]: import pandas as pd

In [2]: time z = pd.read_csv("P00000001-ALL.csv", nrows=20)
CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
Wall time: 0.00 s

In [3]: len(z)
Out[3]: 20

In [4]: time z = pd.read_csv("P00000001-ALL.csv")
CPU times: user 27.63 s, sys: 1.92 s, total: 29.55 s
Wall time: 30.23 s

দুর্দান্ত, অবশ্যই সেই প্যারামিটারটি মিস করেছে। ধন্যবাদ
দাড়ি

4
skiprows=Noneমনে রাখতে একটি দরকারী প্যারামিটারও রয়েছে
নীতিন

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