পান্ডাস ডেটা ফ্রেম হিসাবে সিএসভি ফাইল আমদানি করুন


91

পান্ডাস ডাটাফ্রেমে কোনও সিএসভি ফাইলে পড়ার পাইথনের কী উপায় (যা আমি তখন স্ট্যাটিস্টিকাল অপারেশনের জন্য ব্যবহার করতে পারি, আলাদাভাবে টাইপযুক্ত কলাম ইত্যাদি থাকতে পারি)?

আমার সিএসভি ফাইলে "value.txt"নিম্নলিখিত সামগ্রী রয়েছে:

Date,"price","factor_1","factor_2"
2012-06-11,1600.20,1.255,1.548
2012-06-12,1610.02,1.258,1.554
2012-06-13,1618.07,1.249,1.552
2012-06-14,1624.40,1.253,1.556
2012-06-15,1626.15,1.258,1.552
2012-06-16,1626.15,1.263,1.558
2012-06-17,1626.15,1.264,1.572

আর-তে আমরা এই ফাইলটি ব্যবহার করে পড়ব:

price <- read.csv("value.txt")  

এবং এটি কোনও আর ডেটা.ফ্রেম ফিরে আসবে:

> price <- read.csv("value.txt")
> price
     Date   price factor_1 factor_2
1  2012-06-11 1600.20    1.255    1.548
2  2012-06-12 1610.02    1.258    1.554
3  2012-06-13 1618.07    1.249    1.552
4  2012-06-14 1624.40    1.253    1.556
5  2012-06-15 1626.15    1.258    1.552
6  2012-06-16 1626.15    1.263    1.558
7  2012-06-17 1626.15    1.264    1.572

একই কার্যকারিতা পাওয়ার জন্য কি পাইথোনিক উপায় আছে?


ডেটাফ্রেম যা বিশেষ তা নিয়ে আপনি কী প্রশংসা করবেন এবং এর সাথে আপনি কোন পরিসংখ্যানিক অপারেশন করতে পারেন?
এলডব্লিউজেড

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

ধন্যবাদ! এটি আসলে আমার পক্ষে খুব দরকারী। আমি সবসময় সিএসভি ফাইলটি সিএসভি মডিউল দিয়ে লোড করেছি যা আমাকে তালিকাগুলির একটি তালিকা দেয়। এই ডেটা.ফ্রেমে আরও ভাল শোনায়!
এলডব্লিউজেড

@ ডাব্লুডাব্লুডিজ: আমার সম্পাদনাগুলি এবং লিঙ্কটি দেখুন, এলএমকে যদি এটি আপনার প্রশ্নগুলির সংলগ্নভাবে উত্তর দেয়। সুবিধাগুলি প্যাকেজটি 'বিক্রয়' করতে আমরা এখানে যতটা করতে পারি তা হ'ল। বিস্তৃত প্রশ্ন "সরল পাইথন অ্যারে / তালিকা-তালিকা-তালিকাতে প্যান্ডাস ডেটাফ্রেম ব্যবহারের সুবিধা কী?" এখানে অনেকগুলি সুবিধা রয়েছে, এখানে তালিকাভুক্ত করার উপায় রয়েছে ...
স্মি

উত্তর:



11

পান্ডাস ডেটা ফ্রেম হিসাবে কোনও সিএসভি ফাইল পড়তে আপনাকে ব্যবহার করতে হবে pd.read_csv

গল্পটি এখানেই শেষ হয় না; ডেটা বিভিন্ন আকারে বিদ্যমান এবং এটি বিভিন্ন উপায়ে সংরক্ষণ করা read_csvহয় যাতে আপনার ডেটা সঠিকভাবে পঠিত হয় তা নিশ্চিত করতে আপনাকে প্রায়শই অতিরিক্ত পরামিতিগুলি পাস করতে হবে ।

আপনার ব্যবহারের প্রয়োজন হবে এমন উপযুক্ত যুক্তির পাশাপাশি সিএসভি ফাইলগুলির সাথে सामना করা সাধারণ পরিস্থিতিগুলির তালিকা দেওয়ার একটি টেবিল এখানে। আপনার ডেটা পড়তে সাধারণত নীচের সমস্ত যুক্তি বা কিছু যুক্তির প্রয়োজন হবে ।

┌──────────────────────────────────────────────────────────┬─────────────────────────────┬────────────────────────────────────────────────────────┐
│  ScenarioArgumentExample                                               │
├──────────────────────────────────────────────────────────┼─────────────────────────────┼────────────────────────────────────────────────────────┤
│  Read CSV with different separator¹                      │  sep/delimiter              │  read_csv(..., sep=';')                                │
│  Read CSV with tab/whitespace separator                  │  delim_whitespace           │  read_csv(..., delim_whitespace=True)                  │
│  Fix UnicodeDecodeError while reading²                   │  encoding                   │  read_csv(..., encoding='latin-1')                     │
│  Read CSV without headers³                               │  header and names           │  read_csv(..., header=False, names=['x', 'y', 'z'])    │
│  Specify which column to set as the index⁴               │  index_col                  │  read_csv(..., index_col=[0])                          │
│  Read subset of columns                                  │  usecols                    │  read_csv(..., usecols=['x', 'y'])                     │
│  Numeric data is in European format (eg., 1.234,56)      │  thousands and decimal      │  read_csv(..., thousands='.', decimal=',')             │
└──────────────────────────────────────────────────────────┴─────────────────────────────┴────────────────────────────────────────────────────────┘

পাদটীকা

  1. ডিফল্টরূপে, read_csvপারফরম্যান্সের জন্য সি পার্সার ইঞ্জিন ব্যবহার করে। সি পার্সার কেবল একক অক্ষর বিভাজককে পরিচালনা করতে পারে। আপনার সিএসভিতে যদি একাধিক-অক্ষর বিভাজক থাকে, 'python'ইঞ্জিনটি ব্যবহার করার জন্য আপনার কোডটি পরিবর্তন করতে হবে । আপনি নিয়মিত প্রকাশ করতে পারেন:

    df = pd.read_csv(..., sep=r'\s*\|\s*', engine='python')
    
  2. UnicodeDecodeErrorডেটা যখন একটি এনকোডিং ফর্ম্যাটে সংরক্ষণ করা হয়েছিল তবে ভিন্ন, বেমানান একটিতে পড়ে তখন ঘটে। বেশিরভাগ সাধারণ এনকোডিং স্কিমগুলি হ'ল 'utf-8'এবং 'latin-1', আপনার ডেটাগুলির মধ্যে একটির মধ্যে এটি ফিট হতে পারে।

  3. header=Falseউল্লেখ করে যে সিএসভিতে প্রথম সারিটি শিরোনাম সারিটির পরিবর্তে ডেটা সারি হয় এবং এটি তৈরি হয়ে গেলে names=[...]আপনাকে কলামের নামের তালিকা নির্দিষ্ট করে ডেটাফ্রেমকে নির্ধারণ করতে দেয়।

  4. "নাম: 0" তখনই ঘটে যখন একটি নামবিহীন সূচকযুক্ত ডেটাফ্রেম সিএসভিতে সংরক্ষণ করা হয় এবং তারপরে পুনরায় পড়তে হয়। পড়ার সময় সমস্যাটি ঠিক করার পরিবর্তে, আপনি লেখার সময় সমস্যাটি সমাধান করতে পারেন

    df.to_csv(..., index=False)
    

এখানে অন্যান্য যুক্তি রয়েছে যা আমি এখানে উল্লেখ করি নি তবে আপনি এগুলি প্রায়শই মুখোমুখি হোন।


4
আপনি কি দয়া করে টেবিল-হিসাবে-ইমেজটিকে ইউনিকোড পাঠ্য হিসাবে পুনরায় ফর্ম্যাট / পুনরায় ফর্ম্যাট করতে পারেন যেমন ozh.github.io/ascii-tables ? অন্যথায় এটি পড়া শক্ত, এবং সামগ্রী অনুসন্ধানের জন্য সূচী করা হবে না, বা সাধারণ পুরানো সিটিআরএল-এফ পাঠ্য সন্ধানের সাথে সন্ধানযোগ্য।
স্মি

@ এসএমসিআই আমি সূচীকরণের বিষয়ে আপনি যা বলেছিলেন তাতে আমি একমত (প্লাস যে চিত্রগুলি অন্য ব্যক্তিদের দ্বারা সম্পাদনা করা যায় না) তবে এটি প্রায় ভাল দেখায় না এবং এটি স্ক্রোলিংয়ের প্রয়োজন যা অনুসরণ করা শক্ত করে তোলে।
cs95

যাইহোক আপনাকে নতুন ব্যবহারকারীর পক্ষে বান্ধব হতে এটি পুনরায় লিখতে হবে; 'এড়ানো "এর মতো বোধগম্য পদার্থের পরিবর্তে ": "" এটিতে কিছু সরল ইংরেজী বলা উচিত ' index_col: পান্ডাসকে আপনার ডেটাফ্রেমের সূচক হিসাবে কোন কলাম (গুলি) ব্যবহার করতে হবে তা বলুন '
স্মি

@ এসএমসিআই দেখে মনে হচ্ছে ASCII টেবিলগুলি সুপারস্ক্রিপ্টগুলির সাথে সুন্দরভাবে খেলছে না - এটি টেবিলের বিন্যাসকে মিসড করে।
cs95

সিএস 95: আমি ইউনিকোডের প্রস্তাব দিয়েছি, এএসসিআইআই নয়। ইউনিকোড ভাল কাজ করে। সুতরাং কেবল ozh.github.io/ascii-tables- এর পুলডাউন-
স্মি

9

পাইথনের অন্তর্নির্মিত সিএসভি মডিউলটি ব্যবহার করে পান্ডাস লাইব্রেরির বিকল্প রয়েছে ।

import csv
from pprint import pprint
with open('foo.csv', 'rb') as f:
    reader = csv.reader(f)
    headers = reader.next()
    column = {h:[] for h in headers}
    for row in reader:
        for h, v in zip(headers, row):
            column[h].append(v)
    pprint(column)    # Pretty printer

মুদ্রণ করবে

{'Date': ['2012-06-11',
          '2012-06-12',
          '2012-06-13',
          '2012-06-14',
          '2012-06-15',
          '2012-06-16',
          '2012-06-17'],
 'factor_1': ['1.255', '1.258', '1.249', '1.253', '1.258', '1.263', '1.264'],
 'factor_2': ['1.548', '1.554', '1.552', '1.556', '1.552', '1.558', '1.572'],
 'price': ['1600.20',
           '1610.02',
           '1618.07',
           '1624.40',
           '1626.15',
           '1626.15',
           '1626.15']}

6
import pandas as pd
df = pd.read_csv('/PathToFile.txt', sep = ',')

এটি আপনার .txt বা .csv ফাইলটিকে ডেটাফ্রেমে আমদানি করবে।


2

এটা চেষ্টা কর

import pandas as pd
data=pd.read_csv('C:/Users/Downloads/winequality-red.csv')

আপনার ডেটা সেটটি যেখানে পাওয়া যাবে তার সাথে ফাইলের টার্গেটের অবস্থানটি প্রতিস্থাপন করুন, এই url টি https://medium.com/@kanchanardj/jargon-in-python-used-in-data-s ज्ञान-to- laymans- language- part- one-12ddfd31592f


1
%cd C:\Users\asus\Desktop\python
import pandas as pd
df = pd.read_csv('value.txt')
df.head()
    Date    price   factor_1    factor_2
0   2012-06-11  1600.20 1.255   1.548
1   2012-06-12  1610.02 1.258   1.554
2   2012-06-13  1618.07 1.249   1.552
3   2012-06-14  1624.40 1.253   1.556
4   2012-06-15  1626.15 1.258   1.552

0

আপনি সিএসভি ফাইলগুলি পরিচালনা করতে পাইথন স্ট্যান্ডার্ড লাইব্রেরিতে পাওয়া সিএসভি মডিউলটি ব্যবহার করতে পারেন ।

উদাহরণ:

import csv
with open('some.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        print row

-0। আর থেকে আগত, মজলোরটি csvমডিউলটি খুব নীচের স্তরের হিসাবে সন্ধান করবে না । pandasঅনুরোধ বিমূর্ত স্তর প্রদান করে।
স্টিভেন রাম্বালস্কি

... এছাড়াও এটি একটি অদ্ভুত অ্যারে হিসাবে একটি দরকারী পাইথন অবজেক্টে ডেটা পড়তে পারে ...
পল

0

পিডি
ডেটাসেট হিসাবে পিণ্ডগুলি আমদানি করুন = পিডি.ড্রেড_সিএসভি ('/ হোম / এনএসপিথন / ডাউনলোডস / মুভি_মেটাডেটা 1 সিএসভি')


-1

যথেষ্ট পরিষ্কার হিসাবে নোট, কিন্তু:

import csv

with open("value.txt", "r") as f:
    csv_reader = reader(f)
    num = '  '
    for row in csv_reader:
        print num, '\t'.join(row)
        if num == '  ':  
            num=0
        num=num+1

কমপ্যাক্ট হিসাবে নয়, তবে এটি কাজটি করে:

   Date price   factor_1    factor_2
1 2012-06-11    1600.20 1.255   1.548
2 2012-06-12    1610.02 1.258   1.554
3 2012-06-13    1618.07 1.249   1.552
4 2012-06-14    1624.40 1.253   1.556
5 2012-06-15    1626.15 1.258   1.552
6 2012-06-16    1626.15 1.263   1.558
7 2012-06-17    1626.15 1.264   1.572

4
এটি ওপি-র প্রশ্নের উত্তর দেয় না কারণ এটি পাইথন অবজেক্টে সিএসভি ডেটা পড়ে না।
পল হিমস্ট্র্রা

লুপের জন্য গণনার সাথে নামটি প্রতিস্থাপন করতে পারে?
LWZ

@ পলহিমস্ট্র্রা, ওপি "অবজেক্ট" এর কথা উল্লেখ করেনি, তবে স্বাচ্ছন্দ্যের জন্য বলেন। তবুও, আমি সন্দেহ করি যে "পান্ডাস" পদ্ধতির জন্য যা চাওয়া হয়েছিল তা আরও ভাল ফিট করে।
লি-ম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.