首页 > Python资料 博客日记
【python】pandas常见文件读取方法
2024-09-11 11:00:07Python资料围观62次
pandas是一个强大的Python数据分析库,它提供了多种读取文件的方法,支持多种文件格式。以下是pandas中常见的一些文件读取方法及其详细说明、常用参数、代码示例和数据示例。
1. read_csv()
(1)用途:
读取 CSV(Comma Separated Values)文件。
(2)常用参数:
filepath_or_buffer
:文件路径或类似文件的对象。sep
或delimiter
:字段分隔符,默认为逗号,
。header
:用作列名的行号,默认为0(即第一行)。index_col
:用作行索引的列编号或列名。dtype
:每列的数据类型。nrows
:需要读取的行数。
(3)代码示例:
import pandas as pd
# 读取 CSV 文件
df = pd.read_csv('data.csv')
# 显示数据的前几行
print(df.head())
(4)数据示例 (data.csv
):
Name,Age,City
Alice,25,New York
Bob,30,San Francisco
Charlie,35,Los Angeles
(5)header
参数基本用法
在Pandas库中,read_csv
函数的header
参数用于指定用作列名的行号或处理表头的方式。关于header
参数的详细解释:
-
默认行为:当不指定
header
参数时,其默认值为0,表示将CSV文件中的第一行(索引为0的行)作为列名(表头)。 -
指定行号:如果CSV文件中的列名不在第一行,而是位于其他行,可以通过设置
header
参数为相应的行号(从0开始计数)来指定。例如,header=1
表示将第二行作为列名。 -
多行表头:在某些情况下,CSV文件可能使用多行来定义列名。此时,可以将
header
参数设置为一个列表,例如header=[0,1]
,表示将第一行和第二行的内容合并作为列名。但请注意,这种方式在Pandas中并不常用,因为它可能会导致列名变得复杂且难以理解。 -
无表头:如果CSV文件没有包含列名,可以将
header
参数设置为None
。在这种情况下,Pandas将自动生成默认的列名,如0, 1, 2,…。
示例1:无表头,自定义列名
假设CSV文件内容如下(没有列名):
Alice,25,New York
Bob,30,Los Angeles
我们可以设置header=None
并自定义列名:
df = pd.read_csv('example_without_header.csv', header=None, names=['Name', 'Age', 'City'])
print(df.head())
输出:
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
示例2:无表头,不自定义列名
使用 header=None
但是不自定义列名:
当 header
设置为 None
时,并且不指定列名,在这种情况下,Pandas 会自动生成默认的列名,通常是 0, 1, 2, ...
等数字。
import pandas as pd
```python
df = pd.read_csv('example_without_header.csv', header=None)
print(df.head())
输出:
0 1 2
0 Alice 25 New York
1 Bob 30 Los Angeles
其中,0, 1, 2, ...
是Pandas自动生成的列名。
2. read_table()
(1)用途:
读取类似表格的数据,如 TSV(Tab Separated Values)文件。
(2)常用参数:
filepath_or_buffer
:文件路径或类似文件的对象。sep
或delimiter
:字段分隔符,默认为制表符\t
。- 其他参数与
read_csv()
类似。
(3)代码示例:
import pandas as pd
# 读取 TSV 文件
df = pd.read_table('data.tsv', delimiter='\t')
# 显示数据的前几行
print(df.head())
(4)数据示例 (data.tsv
):
Name Age City
Alice 25 New York
Bob 30 San Francisco
Charlie 35 Los Angeles
3. read_excel()
(1)用途:
读取 Excel 文件(.xlsx 或 .xls)。
(2)常用参数:
io
:文件路径或类似文件的对象。sheet_name
:要读取的工作表名称或索引,默认为0(即第一个工作表)。header
:用作列名的行号,默认为0。dtype
:每列的数据类型。engine
:用于解析 Excel 文件的引擎,如openpyxl
(用于 .xlsx)或xlrd
(用于较旧的 .xls)。
(3)代码示例:
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 显示数据的前几行
print(df.head())
(4)数据示例 (data.xlsx
- Sheet1):
与 CSV 数据类似,但存储在 Excel 文件中。
4. read_json()
(1)用途:
读取 JSON(JavaScript Object Notation)文件或 JSON 格式的字符串。
(2)常用参数:
path_or_buf
:文件路径或 JSON 格式的字符串。orient
:指定 JSON 数据的结构,如'split'
、'records'
等。dtype
:每列的数据类型。lines
:是否按行读取 JSON 数据。
(3)代码示例:
import pandas as pd
# 从字符串读取 JSON 数据
json_data = '''
[
{"Name": "Alice", "Age": 25, "City": "New York"},
{"Name": "Bob", "Age": 30, "City": "San Francisco"},
{"Name": "Charlie", "Age": 35, "City": "Los Angeles"}
]
'''
df = pd.read_json(json_data)
# 显示数据
print(df)
(4)数据示例 (JSON 字符串):
见上述 JSON 字符串。
5. read_html()
(1)用途:
从网页或HTML字符串中读取表格数据,并返回一个包含DataFrame
对象的列表。
(2)常用参数:
io
:URL、文件路径或HTML字符串。match
:用于匹配表格的正则表达式字符串或正则表达式对象。attrs
:字典或列表,用于识别表格的属性,如{'id': 'table_id'}
。parse_dates
:将某些列解析为日期。header
:用作列名的行号,默认为0(如果未找到,则使用None)。
(3)Python 代码示例
使用pandas
的read_html()
函数来解析这个HTML字符串中的表格:
import pandas as pd
# 从网页URL读取HTML表格
url = 'https://example.com/page-with-tables'
dfs = pd.read_html(url, match='Table Title') # 假设表格有'Table Title'这样的属性或文本
# 由于我们只有一个表格,所以直接取第一个DataFrame
df = dfs[0]
# 显示数据
print(df)
运行上述代码,你应该会得到以下输出(DataFrame的格式化显示):
Name Age City
0 Alice 25 New York
1 Bob 30 San Francisco
2 Charlie 35 Los Angeles
(4)HTML 字符串示例
假设我们有一个简单的HTML字符串,它包含了一个表格:
html_string = '''
<html>
<head>
<title>Sample HTML Table</title>
</head>
<body>
<table border="1">
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>City</th>
</tr>
</thead>
<tbody>
<tr>
<td>Alice</td>
<td>25</td>
<td>New York</td>
</tr>
<tr>
<td>Bob</td>
<td>30</td>
<td>San Francisco</td>
</tr>
<tr>
<td>Charlie</td>
<td>35</td>
<td>Los Angeles</td>
</tr>
</tbody>
</table>
</body>
</html>
'''
请注意,read_html()
通常用于从网页中提取表格数据,但由于网页结构和内容可能会动态变化,因此通常建议使用更稳定的数据源,如CSV、Excel或JSON文件。
注意事项:
read_html()
可能不适用于所有网页和所有表格,因为它依赖于Pandas解析HTML的能力,这可能会受到HTML结构复杂性的影响。- 如果要处理的网页需要登录或其他形式的身份验证,可能需要使用如
requests
库之类的工具来获取网页内容,然后再将其传递给read_html()
。 read_html()
返回的是一个包含DataFrame
对象的列表。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj