I have a csv file in the following format:
"age","job","marital","education","default","balance","housing","loan"
58,"management","married","tertiary","no",2143,"yes","no"
44,"technician","single","secondary","no",29,"yes","no"
However, instead of being separated by tabs (different columns), they all lie in the same first column. When I try reading this using pandas, the output gives all the values in the same list instead of a list of lists.
My code:
dataframe = pd.read_csv("marketing-data.csv", header = 0, sep= ",")
dataset = dataframe.values
print(dataset)
O/p:
[[58 'management' 'married' ..., 2143 'yes' 'no']
[44 'technician' 'single' ..., 29 'yes' 'no']]
What I need:
[[58, 'management', 'married', ..., 2143, 'yes', 'no']
[44 ,'technician', 'single', ..., 29, 'yes', 'no']]
What is it I am missing?
I think you are confused by the print()
output which doesn't show commas.
Demo:
In [1]: df = pd.read_csv(filename)
Pandas representation:
In [2]: df
Out[2]:
age job marital education default balance housing loan
0 58 management married tertiary no 2143 yes no
1 44 technician single secondary no 29 yes no
Numpy representation:
In [3]: df.values
Out[3]:
array([[58, 'management', 'married', 'tertiary', 'no', 2143, 'yes', 'no'],
[44, 'technician', 'single', 'secondary', 'no', 29, 'yes', 'no']], dtype=object)
Numpy string
representation (result of print(numpy_array)
):
In [4]: print(df.values)
[[58 'management' 'married' 'tertiary' 'no' 2143 'yes' 'no']
[44 'technician' 'single' 'secondary' 'no' 29 'yes' 'no']]
Conclusion: your CSV file has been parsed correctly.
I don't really see a difference between what you want and what you get.. but parsing the csv file with the built in csv module give your desired result
import csv
with open('file.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')
print list(spamreader)
[
['age', 'job', 'marital', 'education', 'default', 'balance', 'housing', 'loan'],
['58', 'management', 'married', 'tertiary', 'no', '2143', 'yes', 'no'],
['44', 'technician', 'single', 'secondary', 'no', '29', 'yes', 'no']
]
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.