前言
很多时候,我们使用pandas进行数据处理的时,并不是将数据写在脚本里,而是使用pandas读取数据文件,pandas可以很便捷地处理CSV格式的文件,本篇文章我们就来介绍一下pandas处理CSV文件的方法。
关于CSV文件
CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。
CSV 是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。
数据准备
我们获取了2022年度中国大陆地区31个省市自治区的主要经济数据,包括GDP,增长率,常住人口,人均GDP,人均收入数据,写入了一个CSV数据。并将文件命名为data.csv。
pandas读取CSV文件
pandas提供了直接读取CSV文件的函数,read_csv()即可以读取数据,下面是我们的读取实例,代码如下:
import pandas as pd
df = pd.read_csv('data.csv')
print(df.to_string())
-------------------------------
输出结果如下:
排名 省份 GDP growth Population GDP per capita Income per capita
0 1 广东 129118.58 1.9 12684.00 10.18 47065
1 2 江苏 122875.60 2.8 8505.40 14.45 49862
2 3 山东 87435.00 3.9 10169.99 8.60 37560
3 4 浙江 77715.00 3.1 6540.00 11.88 60302
4 5 河南 61345.05 3.1 9883.00 6.21 28222
5 6 四川 56749.80 2.9 8372.00 6.78 30679
6 7 湖北 53734.92 4.3 5844.00 9.22 32914
7 8 福建 53109.85 4.7 4188.00 12.68 43118
8 9 湖南 48670.37 4.5 6604.00 7.35 34036
9 10 安徽 45045.00 3.5 6127.00 7.37 32745
10 11 上海 44652.80 -0.2 2489.43 17.94 79610
11 12 河北 42370.40 3.8 7420.00 5.69 30867
12 13 北京 41610.90 0.7 2188.60 19.01 77415
13 14 陕西 32772.68 4.3 3954.00 8.29 30116
14 15 江西 32074.70 4.7 4517.40 7.10 32419
15 16 重庆 29129.03 2.6 3212.43 9.07 35666
16 17 辽宁 28975.10 2.1 4255.00 6.85 36089
17 18 云南 28954.20 4.3 4690.00 6.17 26937
18 19 广西 26300.87 2.9 5037.00 5.22 27981
19 20 山西 25642.59 4.4 3480.48 7.37 29178
20 21 内蒙古 23159.00 4.2 2400.00 9.65 35921
21 22 贵州 20164.58 1.2 3858.00 5.23 25508
22 23 新疆 17741.34 3.2 2589.00 6.85 27063
23 24 天津 16311.34 1.0 1373.00 11.88 48976
24 25 黑龙江 15901.00 2.7 3125.00 5.09 28346
25 26 吉林 13070.24 -1.9 2375.37 5.50 27975
26 27 甘肃 11201.60 4.5 2490.02 4.50 23273
27 28 海南 6818.22 0.2 1020.46 6.68 30957
28 29 宁夏 5069.57 4.0 725.00 6.99 29599
29 30 青海 3610.10 2.3 594.00 6.08 27000
30 31 西藏 2132.64 1.1 366.00 5.83 26675
pandas写入CSV文件
pandas除了可以读取CSV文件中的数据,当然还可以将DataFrame中的数据存储为CSV文件,使用to_csv()即可,示例代码如下:
import pandas as pd
club = ['IG', 'EDG', 'RNG']
player = ['theshy', 'meiko', 'gala']
position = ['top', 'support', 'adc']
dict = {'club': club, 'player': player, 'position': position}
df = pd.DataFrame(dict)
df.to_csv('game.csv')
执行成功之后,我们可以查看CSV文件的内容如下图:
数据处理
- head(),查看头部n行的数据
我们都知道在Linux中,可以使用head查看指定的顶部几行的文件内容,pandas同样提供了head()方法实现类似功能,head(n)读取前面的 n 行,如果不填参数 n ,默认返回 5 行。示例代码如下:
# 读取前5行
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
--------------------------
输出结果如下:
排名 省份 GDP growth Population GDP per capita Income per capita
0 1 广东 129118.58 1.9 12684.00 10.18 47065
1 2 江苏 122875.60 2.8 8505.40 14.45 49862
2 3 山东 87435.00 3.9 10169.99 8.60 37560
3 4 浙江 77715.00 3.1 6540.00 11.88 60302
4 5 河南 61345.05 3.1 9883.00 6.21 28222
# 读取前n行
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head(15))
---------------------------------
输出结果如下:
排名 省份 GDP growth Population GDP per capita Income per capita
0 1 广东 129118.58 1.9 12684.00 10.18 47065
1 2 江苏 122875.60 2.8 8505.40 14.45 49862
2 3 山东 87435.00 3.9 10169.99 8.60 37560
3 4 浙江 77715.00 3.1 6540.00 11.88 60302
4 5 河南 61345.05 3.1 9883.00 6.21 28222
5 6 四川 56749.80 2.9 8372.00 6.78 30679
6 7 湖北 53734.92 4.3 5844.00 9.22 32914
7 8 福建 53109.85 4.7 4188.00 12.68 43118
8 9 湖南 48670.37 4.5 6604.00 7.35 34036
9 10 安徽 45045.00 3.5 6127.00 7.37 32745
10 11 上海 44652.80 -0.2 2489.43 17.94 79610
11 12 河北 42370.40 3.8 7420.00 5.69 30867
12 13 北京 41610.90 0.7 2188.60 19.01 77415
13 14 陕西 32772.68 4.3 3954.00 8.29 30116
14 15 江西 32074.70 4.7 4517.40 7.10 32419
- tail(),查看尾部的数据
与上面所说的head()方法类似,tail( n ) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。
# 读取末尾5行
import pandas as pd
df = pd.read_csv('data.csv')
print(df.tail())
------------------------------------
输出结果如下:
排名 省份 GDP growth Population GDP per capita Income per capita
26 27 甘肃 11201.60 4.5 2490.02 4.50 23273
27 28 海南 6818.22 0.2 1020.46 6.68 30957
28 29 宁夏 5069.57 4.0 725.00 6.99 29599
29 30 青海 3610.10 2.3 594.00 6.08 27000
30 31 西藏 2132.64 1.1 366.00 5.83 26675
# 输出后n行数据
import pandas as pd
df = pd.read_csv('data.csv')
print(df.tail(10))
----------------------
输出结果如下:
排名 省份 GDP growth Population GDP per capita Income per capita
21 22 贵州 20164.58 1.2 3858.00 5.23 25508
22 23 新疆 17741.34 3.2 2589.00 6.85 27063
23 24 天津 16311.34 1.0 1373.00 11.88 48976
24 25 黑龙江 15901.00 2.7 3125.00 5.09 28346
25 26 吉林 13070.24 -1.9 2375.37 5.50 27975
26 27 甘肃 11201.60 4.5 2490.02 4.50 23273
27 28 海南 6818.22 0.2 1020.46 6.68 30957
28 29 宁夏 5069.57 4.0 725.00 6.99 29599
29 30 青海 3610.10 2.3 594.00 6.08 27000
30 31 西藏 2132.64 1.1 366.00 5.83 26675
- info(),返回数据基本信息
info()方法可以返回一些DataFrame的基本信息,示例代码如下:
import pandas as pd
df = pd.read_csv('data.csv')
print(df.info())
-----------------------------
输出结果如下:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 31 entries, 0 to 30 # 行数,31 行,第一行编号为 0
Data columns (total 7 columns): # 列数,7列
# Column Non-Null Count Dtype # # 各列的数据类型
--- ------ -------------- -----
0 排名 31 non-null int64
1 省份 31 non-null object
2 GDP 31 non-null float64
3 growth 31 non-null float64
4 Population 31 non-null float64
5 GDP per capita 31 non-null float64 # non_null 非空数据
6 Income per capita 31 non-null int64
dtypes: float64(4), int64(2), object(1) # 类型
memory usage: 1.8+ KB # 占用内存
None
总结
本文主要介绍了pandas读取和写入csv数据的方法,并且介绍了查看头部和底部数据的方法,后续我们将介绍pandas处理JSON数据的相关方法。