122

CSVファイルをパンダのDataFrameに読み込むPythonの方法は何ですか(統計操作に使用したり、異なるタイプの列を使用したりできます)?

私のCSVファイル"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

Rでは、次を使用してこのファイルを読み取ります。

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

そしてそれはRdata.frameを返します:

> 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

同じ機能を取得するPythonの方法はありますか?

4

9 に答える 9

191

救助するパンダ:

import pandas as pd
print pd.read_csv('value.txt')

        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
5  2012-06-16  1626.15     1.263     1.558
6  2012-06-17  1626.15     1.264     1.572

これにより、に類似したpandasDataFrameR'sが返されます。

于 2013-01-16T18:56:20.563 に答える
17

CSVファイルをpandasDataFrameとして読み取るには、を使用する必要がありますpd.read_csv

しかし、これで話は終わりではありません。データはさまざまな形式で存在し、さまざまな方法で保存されるread_csvため、データが正しく読み込まれるようにするには、多くの場合、追加のパラメーターを渡す必要があります。

これは、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は、パフォーマンスのためにCパーサーエンジンを使用します。Cパーサーは、単一文字の区切り文字のみを処理できます。'python'CSVに複数文字の区切り文字がある場合は、エンジンを使用するようにコードを変更する必要があります。正規表現を渡すこともできます。

    df = pd.read_csv(..., sep=r'\s*\|\s*', engine='python')
    
  2. UnicodeDecodeErrorデータが1つのエンコード形式で保存されていたが、互換性のない別の形式で読み取られた場合に発生します。最も一般的なエンコードスキームはとです。データはこれらのいずれかに適合する可能性があります'utf-8''latin-1'

  3. header=FalseCSVの最初の行がヘッダー行ではなくデータ行であるnames=[...]ことを指定し、作成時にDataFrameに割り当てる列名のリストを指定できるようにします。

  4. 「名前なし:0」は、名前なしのインデックスを持つDataFrameがCSVに保存され、後で再読み取りされるときに発生します。読み取り中に問題を修正する代わりに、を使用して書き込み時に問題を修正することもできます。

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

ここで言及していない他の議論がありますが、これらはあなたが最も頻繁に遭遇するものです。

于 2019-05-21T05:33:36.220 に答える
10

これは、Pythonの組み込みcsvモジュールを使用したpandasライブラリの代替手段です。

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']}
于 2013-01-16T19:20:20.000 に答える
7
import pandas as pd
df = pd.read_csv('/PathToFile.txt', sep = ',')

これにより、.txtまたは.csvファイルがDataFrameにインポートされます。

于 2019-09-07T16:09:37.323 に答える
5

これを試して

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-science-to-laymans-language-part- 1-12ddfd31592f

于 2019-09-20T06:51:12.637 に答える
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
于 2019-09-05T13:59:03.943 に答える
0

Python標準ライブラリにあるcsvモジュールを使用して、 CSVファイルを操作できます。

例:

import csv
with open('some.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        print row
于 2013-01-16T19:03:53.090 に答える
-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
于 2013-01-16T19:12:35.763 に答える
-2
import pandas as pd    
dataset = pd.read_csv('/home/nspython/Downloads/movie_metadata1.csv')
于 2020-10-31T19:45:23.387 に答える