Преобразование файла CSV в словарь Python

У меня есть CSV-файл, как показано ниже, под названием «Data.csv». Данные.csv Я пытаюсь преобразовать его в python, чтобы он попадал в словарь, но, пытаясь понять это в течение 2 часов, я решил поместить их в отдельные списки. Я пробовал НЕСКОЛЬКО разных способов сделать это. Столбец Name импортируется отлично, и я получаю вывод, как и ожидалось, как- ['Royal Dutch Shell plc', 'HSBC Holdings plc', 'BP plc', 'AstraZeneca plc', 'BHP Group plc'........

Однако, как только я пытаюсь сделать это для отношения P/E, он выдает «SyntaxError: не может быть назначен оператору». До сих пор я пытался читать csv и повторять его, пробовал .tolist(), даже пробовал list(data.Name) и даже пытался использовать курсор для просмотра каждого отдельного фрагмента данных и помещения его в переменную ALL для тот же результат. Имя идет совершенно гладко, и как только оно достигает отношения P / E или любых числовых ячеек, оно взрывается.

Ниже приведены некоторые примеры кодов, которые я пробовал:

import csv
import pandas as pd
from pandas import *
import numpy as np

data=["Name","P/E Ratio","P/E/G Ratio","Earnings Per Share","BETA","Score"]
for i in range (0,len(data)):
    cursor=(pd.read_csv("Data.csv", usecols=[(data[i])]))

data=read_csv("Data.csv")
Name=data["Name"].tolist()
P/E_Ratio=data["P/E Ratio"].tolist()
P/E/G_Ratio=data["P/E/G Ratio"].tolist()
Earnings_Per_Share=data["Earnings_Per_Share"].tolist()
BETA=data["BETA"].tolist()
Score=data["Score"].tolist()
print(Name,P/E_Ratio,P/E/G_Ratio,Earnings_Per_Share,BETA,Score)

data = pandas.read_csv("Data.csv",header=0)
Name=list(data.Name)
print(Name)
P/E_Ratio=list(data.P/ERatio)
/ не допускается как часть имени переменной в python, потому что это обозначает деление. Таким образом, присваивание P/E_ratio (и другим) похоже на присвоение результату оператора деления, откуда и возникает ошибка. Попробуйте другое имя переменной или, может быть, вы могли бы использовать pd.DataFrame.to_dict, чтобы избежать всех проблем вместе? Документы: pandas.pydata.org/pandas-docs/stable/reference/api/…
Chrysophylaxs 15.04.2023 16:30

Проверьте csv.DictReader

JonSG 15.04.2023 16:30
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
66
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Несколько способов сделать это, некоторые с независимыми библиотеками (например, pandas).

Но я бы сделал что-то вроде этого:

import csv
 
filename  = "Data.csv"
 
with open(filename, 'r') as data:
  for line in csv.DictReader(data):
      print(line)

При чтении файлов я предпочитаю придерживаться основных модулей Python вместо «неосновных» модулей Python (не знаю, какое у них будет точное имя). Ссылка здесь и документация

Вот как это сделать, с примером того, как выглядит файл CSV, чтобы вы могли сравнить его с вашим:

import pandas as pd
df = pd.DataFrame({
'Name':[chr(ord('A')+i) for i in range(26)],
'P/E Ratio':[(i+1) for i in range(26)],
'P/E/G Ratio':[i%4 - (10*i)%4 for i in range(26)],
'Earnings Per Share':[(i+1.5) %3 - (10*i)%7 for i in range(26)],
'BETA':[0.5 + (i / 10) % 1 for i in range(26)],
'Score':[0 for i in range(26)]})
print(df)
df.to_csv('so_sample.txt', index=False)

df2 = pd.read_csv('so_sample.txt')
print(df2)

dct = df2.to_dict(orient='list')
print(dct)

Пример df, который записывается в файл csv с помощью df.to_csv('so_sample.txt', index=False):

   Name  P/E Ratio  P/E/G Ratio  Earnings Per Share  BETA  Score
0     A          1            0                 1.5   0.5      0
1     B          2           -1                -0.5   0.6      0
2     C          3            2                -5.5   0.7      0
3     D          4            1                -0.5   0.8      0
4     E          5            0                -2.5   0.9      0
5     F          6           -1                -0.5   1.0      0
6     G          7            2                -2.5   1.1      0
7     H          8            1                 2.5   1.2      0
8     I          9            0                -2.5   1.3      0
9     J         10           -1                -4.5   1.4      0
10    K         11            2                 0.5   0.5      0
11    L         12            1                -4.5   0.6      0
12    M         13            0                 0.5   0.7      0
13    N         14           -1                -1.5   0.8      0
14    O         15            2                 0.5   0.9      0
15    P         16            1                -1.5   1.0      0
16    Q         17            0                -3.5   1.1      0
17    R         18           -1                -1.5   1.2      0
18    S         19            2                -3.5   1.3      0
19    T         20            1                 1.5   1.4      0
20    U         21            0                -3.5   0.5      0
21    V         22           -1                 1.5   0.6      0
22    W         23            2                -0.5   0.7      0
23    X         24            1                -5.5   0.8      0
24    Y         25            0                -0.5   0.9      0
25    Z         26           -1                -2.5   1.0      0

Пример текстового файла so_sample.txt:

Name,P/E Ratio,P/E/G Ratio,Earnings Per Share,BETA,Score
A,1,0,1.5,0.5,0
B,2,-1,-0.5,0.6,0
C,3,2,-5.5,0.7,0
D,4,1,-0.5,0.8,0
E,5,0,-2.5,0.9,0
F,6,-1,-0.5,1.0,0
G,7,2,-2.5,1.1,0
H,8,1,2.5,1.2,0
I,9,0,-2.5,1.3,0
J,10,-1,-4.5,1.4,0
K,11,2,0.5,0.5,0
L,12,1,-4.5,0.6000000000000001,0
M,13,0,0.5,0.7,0
N,14,-1,-1.5,0.8,0
O,15,2,0.5,0.8999999999999999,0
P,16,1,-1.5,1.0,0
Q,17,0,-3.5,1.1,0
R,18,-1,-1.5,1.2,0
S,19,2,-3.5,1.3,0
T,20,1,1.5,1.4,0
U,21,0,-3.5,0.5,0
V,22,-1,1.5,0.6000000000000001,0
W,23,2,-0.5,0.7000000000000002,0
X,24,1,-5.5,0.7999999999999998,0
Y,25,0,-0.5,0.8999999999999999,0
Z,26,-1,-2.5,1.0,0

Вывод df2 после чтения кадра данных из файла csv с помощью pd.read_csv('so_sample.txt'):

   Name  P/E Ratio  P/E/G Ratio  Earnings Per Share  BETA  Score
0     A          1            0                 1.5   0.5      0
1     B          2           -1                -0.5   0.6      0
2     C          3            2                -5.5   0.7      0
3     D          4            1                -0.5   0.8      0
4     E          5            0                -2.5   0.9      0
5     F          6           -1                -0.5   1.0      0
6     G          7            2                -2.5   1.1      0
7     H          8            1                 2.5   1.2      0
8     I          9            0                -2.5   1.3      0
9     J         10           -1                -4.5   1.4      0
10    K         11            2                 0.5   0.5      0
11    L         12            1                -4.5   0.6      0
12    M         13            0                 0.5   0.7      0
13    N         14           -1                -1.5   0.8      0
14    O         15            2                 0.5   0.9      0
15    P         16            1                -1.5   1.0      0
16    Q         17            0                -3.5   1.1      0
17    R         18           -1                -1.5   1.2      0
18    S         19            2                -3.5   1.3      0
19    T         20            1                 1.5   1.4      0
20    U         21            0                -3.5   0.5      0
21    V         22           -1                 1.5   0.6      0
22    W         23            2                -0.5   0.7      0
23    X         24            1                -5.5   0.8      0
24    Y         25            0                -0.5   0.9      0
25    Z         26           -1                -2.5   1.0      0

Выходной словарь, созданный с помощью df2.to_dict(orient='list'):

{'Name': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'], 'P/E Ratio': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], 'P/E/G Ratio': [0, -1, 2, 1, 0, -1, 2, 1, 0, -1, 2, 1, 0, -1, 2, 1, 0, -1, 2, 1, 0, -1, 2, 1, 0, -1], 'Earnings Per Share': [1.5, -0.5, -5.5, -0.5, -2.5, -0.5, -2.5, 2.5, -2.5, -4.5, 0.5, -4.5, 0.5, -1.5, 0.5, -1.5, -3.5, -1.5, -3.5, 1.5, -3.5, 1.5, -0.5, -5.5, -0.5, -2.5], 'BETA': [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 0.5, 0.6000000000000001, 0.7, 0.8, 0.8999999999999999, 1.0, 1.1, 1.2, 1.3, 1.4, 0.5, 0.6000000000000001, 0.7000000000000002, 0.7999999999999998, 0.8999999999999999, 1.0], 'Score': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}

Другие вопросы по теме