Pandas read_csv()–将CSV文件读取到DataFrame
Pandas 的read_csv()方法用于将CSV文件读取到DataFrame对象中。
CSV文件就像一个二维表,其中的值使用定界符分隔。
1.Pandas read_csv()示例
假设我们有一个包含以下内容的CSV文件" employees.csv"。
Emp ID,Emp Name,Emp Role 1,hyman Kumar,Admin 2,David Lee,Editor 3,Lisa Ray,Author
让我们看看如何使用Pandas的read_csv()函数将其读取到DataFrame中。
import pandas emp_df = pandas.read_csv('employees.csv') print(emp_df)
输出:
Emp ID Emp Name Emp Role 0 1 hyman Kumar Admin 1 2 David Lee Editor 2 3 Lisa Ray Author
推荐读物:Python Pandas教程
2.使用Pandas read_csv()函数指定分隔符
CSV文件的默认定界符是逗号。
但是,我们也可以使用任何其他定界符。
假设我们的CSV文件分隔符为#。
Emp ID#Emp Name#Emp Role 1#hyman Kumar#Admin 2#David Lee#Editor 3#Lisa Ray#Author
在这种情况下,我们可以在调用read_csv()函数时指定sep
参数。
import pandas emp_df = pandas.read_csv('employees.csv', sep='#') print(emp_df)
输出:
Emp ID Emp Name Emp Role 0 1 hyman Kumar Admin 1 2 David Lee Editor 2 3 Lisa Ray Author
3.仅从CSV文件中读取特定的列
我们可以指定" usecols"参数来从CSV文件中读取特定的列。
当CSV文件包含许多列但我们仅对其中几列感兴趣时,这将非常有用。
import pandas emp_df = pandas.read_csv('employees.csv', usecols=['Emp Name', 'Emp Role']) print(emp_df)
输出:
Emp Name Emp Role 0 hyman Kumar Admin 1 David Lee Editor 2 Lisa Ray Author
4.读取没有标题的CSV文件
不一定要在CSV文件中包含标题行。
如果CSV文件没有标题行,我们仍然可以通过将`header = None'传递给read_csv()函数来读取它。
假设我们的employee.csv文件包含以下内容。
1,hyman Kumar,Admin 2,David Lee,Editor
让我们看看如何将此CSV文件读取到DataFrame对象中。
import pandas emp_df = pandas.read_csv('employees.csv', header=None) print(emp_df)
输出:
0 1 2 0 1 hyman Kumar Admin 1 2 David Lee Editor 2 3 Lisa Ray Author
请注意,列标题是从0到N自动分配的。
我们可以在usecols参数中传递这些列值以读取特定的列。
import pandas emp_df = pandas.read_csv('employees.csv', header=None, usecols=[1]) print(emp_df)
输出:
1 0 hyman Kumar 1 David Lee
5.在CSV文件中指定标题行
我们还可以为标题值指定行。
标头行之前的任何行都将被丢弃。
假设CSV文件包含以下数据。
# some random data invalid data Emp ID,Emp Name,Emp Role 1,hyman Kumar,Admin 2,David Lee,Editor 3,Lisa Ray,Author
标头数据位于第三行。
因此,我们必须传递" header = 2"来从文件中读取CSV数据。
import pandas emp_df = pandas.read_csv('employees.csv', header=2) print(emp_df)
输出:
Emp ID Emp Name Emp Role 0 1 hyman Kumar Admin 1 2 David Lee Editor 2 3 Lisa Ray Author
6.跳过CSV行
我们可以传递skiprows
参数来跳过CSV文件中的行。
假设我们要从原始CSV文件中跳过第三行和第四行。
import pandas emp_df = pandas.read_csv('employees.csv', skiprows=[2, 3]) print(emp_df)
输出:
Emp ID Emp Name Emp Role 0 1 hyman Kumar Admin
7.为Pandas 指定解析器引擎read_csv()函数
假设我们的CSV文件分隔符为" ##",即多个字符。
Emp ID##Emp Name##Emp Role 1##hyman Kumar##Admin 2##David Lee##Editor 3##Lisa Ray##Author
让我们看看尝试读取此CSV文件时会发生什么。
import pandas emp_df = pandas.read_csv('employees.csv', sep='##') print(emp_df)
输出:
/Users/hyman/Documents/PycharmProjects/AskPython/hello-world/theitroad/pandas/pandas_read_csv.py:5: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'. emp_df = pandas.read_csv('employees.csv', sep='##') Emp ID Emp Name Emp Role 0 1 hyman Kumar Admin 1 2 David Lee Editor 2 3 Lisa Ray Author
我们可以通过在read_csv()函数中指定" engine"参数来避免该警告。
emp_df = pandas.read_csv('employees.csv', sep='##', engine='python')
有两个解析器引擎– c和python。
C解析器引擎更快且默认,但python解析器引擎功能更完善。