|
pandas是一个强大的Python数据分析库,它提供了多种读取文件的方法,支持多种文件格式。以下是pandas中常见的一些文件读取方法及其详细说明、常用参数、代码示例和数据示例。1.read_csv()(1)用途:读取CSV(CommaSeparatedValues)文件。(2)常用参数:filepath_or_buffer:文件路径或类似文件的对象。sep或delimiter:字段分隔符,默认为逗号,。header:用作列名的行号,默认为0(即第一行)。index_col:用作行索引的列编号或列名。dtype:每列的数据类型。nrows:需要读取的行数。(3)代码示例:importpandasaspd#读取CSV文件df=pd.read_csv('data.csv')#显示数据的前几行print(df.head())1234567(4)数据示例(data.csv):Name,Age,CityAlice,25,NewYorkBob,30,SanFranciscoCharlie,35,LosAngeles1234(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,NewYorkBob,30,LosAngeles12我们可以设置header=None并自定义列名:df=pd.read_csv('example_without_header.csv',header=None,names=['Name','Age','City'])print(df.head())12输出:NameAgeCity0Alice25NewYork1Bob30LosAngeles123示例2:无表头,不自定义列名使用header=None但是不自定义列名:当header设置为None时,并且不指定列名,在这种情况下,Pandas会自动生成默认的列名,通常是0,1,2,...等数字。importpandasaspd```pythondf=pd.read_csv('example_without_header.csv',header=None)print(df.head())12345输出:0120Alice25NewYork1Bob30LosAngeles123其中,0,1,2,...是Pandas自动生成的列名。2.read_table()(1)用途:读取类似表格的数据,如TSV(TabSeparatedValues)文件。(2)常用参数:filepath_or_buffer:文件路径或类似文件的对象。sep或delimiter:字段分隔符,默认为制表符\t。其他参数与read_csv()类似。(3)代码示例:importpandasaspd#读取TSV文件df=pd.read_table('data.tsv',delimiter='\t')#显示数据的前几行print(df.head())1234567(4)数据示例(data.tsv):Name Age CityAlice 25 NewYorkBob 30 SanFranciscoCharlie 35 LosAngeles12343.read_excel()(1)用途:读取Excel文件(.xlsx或.xls)。(2)常用参数:io:文件路径或类似文件的对象。sheet_name:要读取的工作表名称或索引,默认为0(即第一个工作表)。header:用作列名的行号,默认为0。dtype:每列的数据类型。engine:用于解析Excel文件的引擎,如openpyxl(用于.xlsx)或xlrd(用于较旧的.xls)。(3)代码示例:importpandasaspd#读取Excel文件df=pd.read_excel('data.xlsx',sheet_name='Sheet1')#显示数据的前几行print(df.head())1234567(4)数据示例(data.xlsx-Sheet1):与CSV数据类似,但存储在Excel文件中。4.read_json()(1)用途:读取JSON(JavaScriptObjectNotation)文件或JSON格式的字符串。(2)常用参数:path_or_buf:文件路径或JSON格式的字符串。orient:指定JSON数据的结构,如'split'、'records'等。dtype:每列的数据类型。lines:是否按行读取JSON数据。(3)代码示例:importpandasaspd#从字符串读取JSON数据json_data='''[{"Name":"Alice","Age":25,"City":"NewYork"},{"Name":"Bob","Age":30,"City":"SanFrancisco"},{"Name":"Charlie","Age":35,"City":"LosAngeles"}]'''df=pd.read_json(json_data)#显示数据print(df)1234567891011121314(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字符串中的表格:importpandasaspd#从网页URL读取HTML表格url='https://example.com/page-with-tables'dfs=pd.read_html(url,match='TableTitle')#假设表格有'TableTitle'这样的属性或文本#由于我们只有一个表格,所以直接取第一个DataFramedf=dfs[0]#显示数据print(df)1234567891011运行上述代码,你应该会得到以下输出(DataFrame的格式化显示):NameAgeCity0Alice25NewYork1Bob30SanFrancisco2Charlie35LosAngeles1234(4)HTML字符串示例假设我们有一个简单的HTML字符串,它包含了一个表格:html_string='''NameAgeCityAlice25NewYorkBob30SanFranciscoCharlie35LosAngeles'''1234567891011121314151617181920212223242526272829303132333435请注意,read_html()通常用于从网页中提取表格数据,但由于网页结构和内容可能会动态变化,因此通常建议使用更稳定的数据源,如CSV、Excel或JSON文件。注意事项:read_html()可能不适用于所有网页和所有表格,因为它依赖于Pandas解析HTML的能力,这可能会受到HTML结构复杂性的影响。如果要处理的网页需要登录或其他形式的身份验证,可能需要使用如requests库之类的工具来获取网页内容,然后再将其传递给read_html()。read_html()返回的是一个包含DataFrame对象的列表。
|
|