当前位置: 首页 > news >正文

pandas文件读取

文章目录

    • 读取/写入csv文件
    • 读取/写入excel文件
    • 读取html转换为表格
    • 案例:北京高考分数线统计分析

Pandas 是 Python 的一个功能强大且灵活的三方包,可处理标记和时间序列数据。还提供统计方法、启用绘图等功能。Pandas 的一项重要功能是能够编写和读取 Excel、CSV 和许多其他类型的文件并且能有效地进行处理文件。

当使用 Pandas 做数据分析的时,需要读取事先准备好的数据集,这是做数据分析的第一步。Panda 提供了多种读取数据的方法:

  • read_csv() 用于读取文本文件
  • read_excel() 读取 excel 文件
  • read_html() 读取 html 表格
  • read_json() 用于读取 json 文件
  • read_sql_query() 读取 sql 语句的

读取/写入csv文件

read_csv() 函数的功能是可以让文件或者文件中url地址以及文件新对象中加载带有分隔符的数据,它默认分隔符是逗号

import pandas as pd
df = pd.DataFrame({'one_name':[1,2,3],'two_name':[4,5,5]})
df.to_csv("test.txt")
file = open('test.txt')
file_data = pd.read_csv(file)
print(file_data)
'''
	Unnamed: 0	one_name	two_name
0	0	1	4
1	1	2	5
2	2	3	5
'''

读取/写入excel文件

read_excel() 的作用:将Excel文件读取到pandas DataFrame中。

支持从本地文件系统或URL读取的xls,xlsx,xlsm,xlsb和odf文件扩展名。 支持读取单一sheet或几个sheet。

df1 = pd.DataFrame({'col1':['数','据'],'col2':['分','析']})
df1.to_excel('./test.xlsx')
excel_path='test.xlsx'
data = pd.read_excel(excel_path)
print(data)
'''
	Unnamed: 0	col1	col2
0	0	数	分
1	1	据	析
'''

读取html转换为表格

read_html() 函数是最简单的爬虫,可以爬取静态网页表格数据。但只适合于爬取 table 表格型数据

import pandas as pd
import requests
html_data = requests.get("http://kaoshi.edu.sina.com.cn/college/majorlist")
html_table_data = pd.read_html(html_data.content,encoding='utf-8')
# 读取html转换为表格
# html_table_data = pd.read_html("http://kaoshi.edu.sina.com.cn/college/majorlist",encoding='utf-8') # 跟上面的方法是一样的
html_table_data[1]
'''
0	1	2	3	4
0	专业名称	专业代码	专业大类	专业小类	操作
1	哲学类	0101	哲学	哲学类	开设院校 加入对比
2	哲学	010101	哲学	哲学类	开设院校 加入对比
3	逻辑学	010102	哲学	哲学类	开设院校 加入对比
4	宗教学	010103	哲学	哲学类	开设院校 加入对比
5	伦理学	010104	哲学	哲学类	开设院校 加入对比
6	经济学类	0201	经济学	经济学类	开设院校 加入对比
7	经济学	020101	经济学	经济学类	开设院校 加入对比
8	经济统计学	020102	经济学	经济学类	开设院校 加入对比
9	国民经济管理	020103	经济学	经济学类	开设院校 加入对比
10	资源与环境经济学	020104	经济学	经济学类	开设院校 加入对比
11	商务经济学	020105	经济学	经济学类	开设院校 加入对比
12	能源经济	020106	经济学	经济学类	开设院校 加入对比
13	劳动经济学	020107	经济学	经济学类	开设院校 加入对比
14	经济工程	020108	经济学	经济学类	开设院校 加入对比
15	数字经济	020109	经济学	经济学类	开设院校 加入对比
16	财政学类	0202	经济学	财政学类	开设院校 加入对比
17	财政学	020201	经济学	财政学类	开设院校 加入对比
18	税收学	020202	经济学	财政学类	开设院校 加入对比
19	金融学类	0203	经济学	金融学类	开设院校 加入对比
20	金融学	020301	经济学	金融学类	开设院校 加入对比
'''

案例:北京高考分数线统计分析

具体要求:(http://gaokao.xdf.cn/201805/10784342.html)

  1. :一本文理科与二本文理科最高分数线是多少,最低的分数线是多少,相差多少?
  2. :2018年与2017年相比,一本文理科与二本文理科变化了多少分?
  3. :求2006-2018年近13年每科分数线的平均值?
import pandas as pd
data = pd.read_excel('scores.xlsx',header=[0,1],index_col=[0])
print(data)
'''
	一本分数线	二本分数线
文科	理科	文科	理科
2018	576	532	488	432
2017	555	537	468	439
2016	583	548	532	494
2015	579	548	527	495
2014	565	543	507	495
2013	549	550	494	505
2012	495	477	446	433
2011	524	484	481	435
2010	524	494	474	441
2009	532	501	489	459
2008	515	502	472	455
2007	528	531	489	478
2006	516	528	476	476
'''
一本分数线二本分数线
文科理科文科理科
2018576532488432
2017555537468439
2016583548532494
2015579548527495
2014565543507495
2013549550494505
2012495477446433
2011524484481435
2010524494474441
2009532501489459
2008515502472455
2007528531489478
2006516528476476
# 一本文理科与二本文理科最高分数线是多少,最低的分数线是多少,相差多少?
score_one1_max = data['一本分数线']['理科'].max()
print("一本理科最高分数线:",score_one1_max)  # 550
score_two1_max = data['二本分数线']['理科'].max()
print("二本理科最高分数线:",score_two1_max)  # 505
score_one1_min = data['一本分数线']['理科'].min()
print("一本理科最低分数线:",score_one1_min)  # 477
score_two1_min = data['二本分数线']['理科'].min()
print("二本理科最低分数线:",score_two1_min)  # 432
print("一本理科最高分数线与一本理科最低分数线相差:",score_one1_max-score_one1_min)  # 73
print("二本理科最高分数线与二本理科最低分数线相差:",score_two1_max-score_two1_min)  # 73
score_one2_max = data['一本分数线']['文科'].max()
print("一本文科最高分数线:",score_one2_max)  # 550
score_two2_max = data['二本分数线']['文科'].max()
print("二本文科最高分数线:",score_two2_max)  # 505
score_one2_min = data['一本分数线']['文科'].min()
print("一本文科最低分数线:",score_one2_min)  # 477
score_two2_min = data['二本分数线']['文科'].min()
print("二本文科最低分数线:",score_two2_min)  # 432
print("一本文科最高分数线与一本文科最低分数线相差:",score_one2_max-score_one2_min)  # 73
print("二本文科最高分数线与二本文科最低分数线相差:",score_two2_max-score_two2_min)  # 73

'''
一本理科最高分数线: 550
二本理科最高分数线: 505
一本理科最低分数线: 477
二本理科最低分数线: 432
一本理科最高分数线与一本理科最低分数线相差: 73
二本理科最高分数线与二本理科最低分数线相差: 73
一本文科最高分数线: 583
二本文科最高分数线: 532
一本文科最低分数线: 495
二本文科最低分数线: 446
一本文科最高分数线与一本文科最低分数线相差: 88
二本文科最高分数线与二本文科最低分数线相差: 86
'''

一本文理科与二本文理科最高分数线是多少,最低的分数线是多少,相差多少?

# 一本文理科与二本文理科最高分数线是多少,最低的分数线是多少,相差多少?
print(data.max())
print(data.min())
print(data.max()-data.min())
'''
一本分数线  文科    583
       理科    550
二本分数线  文科    532
       理科    505
dtype: int64
一本分数线  文科    495
       理科    477
二本分数线  文科    446
       理科    432
dtype: int64
一本分数线  文科    88
       理科    73
二本分数线  文科    86
       理科    73
dtype: int64
'''

2018年与2017年相比,一本文理科与二本文理科变化了多少分?

# 2018年与2017年相比,一本文理科与二本文理科变化了多少分?
data_2018 = data.iloc[0]
data_2017 = data.iloc[1]
print(abs(data_2018-data_2017))
'''
一本分数线  文科    21
       理科     5
二本分数线  文科    20
       理科     7
dtype: int64
'''

求2006-2018年近13年每科分数线的平均值?

# 求2006-2018年近13年每科分数线的平均值?
data.mean()
'''
一本分数线  文科    541.615385
       理科    521.153846
二本分数线  文科    487.923077
       理科    464.384615
dtype: float64
'''

相关文章:

  • 手车做网课网站/搜索引擎优化的方法与技巧
  • 怎样推销网站建设/网站分析培训班
  • 巴中手机网站建设/制作一个简单的html网页
  • 兰州网站建设推广/百度指数如何分析数据
  • 做正版电子书下载网站/整站关键词排名优化
  • wordpress用户留言插件/网站推广的意义和方法
  • Dubbo与Spring集成
  • autocommit的含义
  • Octave安装与使用
  • Kafka-概述
  • 认识涤生大数据的几个月,彻底改变了我
  • 从管理学本科水平开始的统计学进阶
  • Spark 运行架构
  • 如何提高系统稳定性?
  • UITableView内输入框(UITextView)换行
  • Swagger使用
  • 研究生如何能(较快)找出某领域(去噪)已有算法的创新点或者引入其他领域的新算法?
  • 网络编程基础——UDP编程(2)