系列文章目录
Python数据分析入门笔记1——学习前的准备
前言
快速入门pandas,认识pandas三大结构Series、DataFrame和Panel中的前两种,知道读取文件,并且按行或者按列有选择性地查找数据。
一、用pandas读取文件
pandas可以读取CSV和TXT文件中的数据,可以获取Excel、JSON、HTML、Word和PDF文件中的数据,也可以从数据库中获取数据。这里只列出常用的CSV和TXT文件、Excel文件的读取方法。
1. 从CSV和TXT文件中读取数据
csv是一种逗号分隔的文件格式,但其分隔符不一定是逗号。可用记事本或excel打开。 csv文件使用read_csv()函数来读取。 最简单的举例:
import pandas as pd
data = pd.read_csv('d://分省份GDP数据.csv', encoding='gbk')
print(data.columns)
print(data.values)
read_csv()函数语法格式如下,参数说明如下表所示。
pandas.read_csv(filepath_or_buffer, sep=’,’, header=‘infer’, names=None, index_col=None, dtype=None, engine=None,nrows=None,encoding=None)
序号 | 参数 | 说明 |
---|
1 | filepath | 接收string,代表文件路径,无默认。 | 2 | sep | 接收string,代表分隔符。read_csv默认为“,”,read_table默认为制表符“Tab”。 | 3 | header | 接收int或sequence,表示将某行数据作为列名。默认为infer,表示自动识别。 | 4 | names | 接收array,表示列名。默认为None。 | 5 | index_col | 接收int、sequence或False,代表索引列的位置,取值为sequence代表为多重索引。 | 6 | dtype | 接收dict,代表写入的数据类型(列名 为key,数据格式为values)。默认为None。 | 7 | engine | 接收c或者Python,代表数据解析引擎。默认为c。 | 8 | nrows | 接收int,表示读取前n行。 |
尚待解决的问题:
2.从Excel文件中读取数据
Pandas提供了read_excel()函数来读取“xls”和“xlsx”两种Excel文件。 最简单的举例:
import pandas as pd
df=pd.read_excel("D://Projects/2019年底江苏省A级景区名录.xlsx",sheet_name=0,index_col=0)
print(df.columns)
print(df.values)
read_excel()函数语法格式如下,参数说明如下表所示。
pandas.read_excel( filepath, sheetname=0, header=0, names=None, index_col=None, dtype=None ,nrows=None)
序号 | 参数 | 说明 |
---|
1 | filepath | 接收string,代表文件路径,无默认。 | 2 | sheetname | 接收string、int,代表Excel表内数据的分表位置。默认为0。 | 3 | header | 接收int或sequence,表示将某行数据作为列名。默认为infer,表示自动识别。 | 4 | names | 接收array,表示列名。默认为None。 | 5 | index_col | 接收int、sequence或False,代表索引列的位置,取值为sequence代表为多重索引。 | 6 | dtype | 接收dict,代表写入的数据类型(列名 为key,数据格式为values)。默认为None。 |
二、用pandas解析数据
1.pandas三大结构介绍
- Series(系列)
- 一维数组,与NumPy中的一维array类似。
- Series可以保存不同数据类型,如字符串、boolean值、数字等。如果传入的数据类型不统一,最终的dtype通常是object。
- DataFrame(数据帧)
- 二维的表格型数据结构,可以将DataFrame理解为Series的容器。(类似Excel的工作表吗?)DataFrame的单列数据为一个Series。
- Panel(面板)
- 三维的数组,可以理解为DataFrame的容器。(类似Excel的工作簿吗?)
- 内置了十几种数据源读取函数和对应的数据写入函数。
2.DataFrame的常用属性和方法(Series类似不表)
DataFrame是最常用的Pandas对象,类似于Office Excel表格。完成数据读取后,数据就以DataFrame数据结构存储在内存中。但此时并不能直接开始统计分析工作,需要使用DataFrame的属性与方法对数据的分布、大小等进行操作。 假设有一个DataFrame名为df,且数据如下:
学号 | 姓名 | 性别 | 年龄 | 住址 |
---|
S1 | 张三 | 男 | 15 | NaN | S2 | 李四 | 男 | 16 | NaN | S3 | 王五 | 女 | 15 | NaN | S4 | 赵六 | 男 | 14 | NaN |
(1)假设我读取的时候,不指定行索引,参考代码如下:
import pandas as pd
df=pd.read_csv("D://Projects/示例.csv",encoding="gbk")
则属性与方法说明如下:
代码格式 | 功能 | 代码示例 | 结果 |
---|
df.values | 返回ndarray类型的对象 | df.values | | index | 获取行索引 | df.index | RangeIndex(start=0, stop=4, step=1) 说明:由于直接从csv文件中读取数据,未设置行索引,所以会认为csv文件没有行索引,会从0开始递增添加索引。 | columns | 获取列索引 | df.columns | Index([‘学号’, ‘姓名’, ‘性别’, ‘年龄’, ‘住址’], dtype=‘object’) | shape | 数据形状(即行数、列数) | df.shape | (4, 5) 说明:即4行数据,一共5列 | ndim | 获取维度 | df.ndim | 2 说明:即数据是二维的 | size | 元素个数(即行数*列数) | df.size | 20 说明:4行5列所以一共20个元素 | loc[行索引名称或条件,列索引名称] | 按索引名称返回元素 | df.loc[‘S1’,‘性别’] | 男 | iloc[ 行索引位置,列索引位置 ] | 按序值返回元素 | df.iloc[1,1] | '李四’ 说明:行号列号都从0开始,所以[1,1]取的是第二行第二列的数据,也就是李四 | axes | 获取行及列索引 | df.axes | [RangeIndex(start=0, stop=4, step=1), Index([‘学号’, ‘姓名’, ‘性别’, ‘年龄’, ‘住址’], dtype=‘object’)] | df.T | 行与列对调 | df.T | | info() | 打印DataFrame对象的信息 | df.info() | | head(i) | 显示前 i 行数据 | df.head(2) | | tail(i) | 显示后 i 行数据 | df.tail(2) | | describe() | 获取二维数据基本统计值,如计数count,平均数mean,标准差std,最小值min,最大值max等 | df.describe() | | value_counts() | 用来查看数据表中,指定列里有多少个不同的数据值,并计算每个不同值有在该列中的个数,同时还能根据需要进行排序 | df[‘性别’].value_counts() | | count() | 统计非空值数量 | df.count() #统计DataFrame中各列非空值的数量,方便对空值进行处理 | |
(2)假设我读取的时候设置了行索引,参考代码如下:
import pandas as pd
df=pd.read_csv("D://Projects/示例.csv",encoding="gbk",index_col=0)
3.DataFrame中的条件查找——布尔索引
df[df['年龄']>df['年龄'].mean()]
执行结果:
4.DataFrame的修改(暂时不需要,先忽略)
- 修改列名、行索引名
- 列的添加append、删除drop和插入insert
5.DataFrame的分组和聚合
按某一列来分组:groupby(‘用来分组的列名’) 按多列来分组:groupby([‘列名1’,‘列名2’,‘列名3’])
df.groupby('性别')
df.groups
df.groupby(['性别','年龄'])
df.groups
三、小测验(答案放到下一篇博客末尾)
有如下excel文档“2019年底江苏省A级景区名录.xlsx”,完成以下任务:
-
用pandas的read_excel()方法读取这个文件,并将第一列序号作为行索引,并输出文件内容 -
用columns获取列索引,即输出表头 -
统计各市入选的景点个数,输出结果如图: -
按所在地市进行分组,分别统计4A、3A、2A景区的数量,部分输出结果如图所示: -
按景区等级分组,分别统计各等级中各地市的分布情况。部分输出结果如图: -
欢迎补充其他应用场景!
总结
- pandas读取csv和excel文件
- 通过DataFrame查看数据,多种查看方式
|