一.pandas简介
pandas是一个开源的python类库:用于数据分析、数据处理、数据可视化。有如下几个特点:
- 高性能
- 容易使用的数据结构
- 容易使用的数据分析工具
很方便和其他类库一起使用:
- numpy:用于数学计算
- scikit-learn:用于机器学习
安装pandas:pip install pandas
二.pandas实战
2.1 pandas数据读取
数据类型 | 说明 | pandas读取方法 |
---|---|---|
csv、txt | 用于逗号分割、tab分割的纯文本文件 | pd.read_csv |
excel | 微软xls或者xlsx文件 | pd.read_excel |
mysql | 关系型数据库表 | pd.read_sql |
2.1.1读取csv,使用默认逗号分隔符
使用pd.read_csv读取数据
import pandas as pd
fpath="./bank_marketing_copy.csv"
#使用pd.read_csv读取数据
ratings = pd.read_csv(fpath)
#查看前几行数据
ratings.head()
查看数据的形状,返回(行数、列数)
ratings.shape
查看列名列表
ratings.columns
查看索引咧
ratings.index
查看每列的数据类型
ratings.dtypes
读取txt文件自定义分隔符
txt_path="./access_pvuv.txt"
pvuv = pd.read_csv(txt_path,sep="\t",header=None,names=['pdate','pv','uv'])
pvuv
读取excel文件
excel_path = "./pandasdata/access_pvuv.xlsx"
pvuv = pd.read_excel(excel_path)
pvuv
2.2 pandas数据结构dataFrame & Series
Dataframe:二维数据,整个表格,多行多列
Series:一维数据,一行一列
Series:是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一组与之相关的数据标签(即索引)组成
2.2.1 仅有数据列表即可产生最简单的series
import numpy as np
import pandas as pd
s1 = pd.Series([1,'a',5.2,7])
s1
获取索引
s1.index
获取数据
s1.values
创建一个具有标签索引的series
s2 = pd.Series([1,'a',5.2,7],index=['a','b','c','d'])
s2
使用python字典创建series
sdata = {'zhoujie':8888,'xiaohai':6666,'xiaoming':7777}
s3 = pd.Series(sdata)
s3
2.2.2 根据标签索引查询series数据
类似python的字段dict
s2['a']
s2[['a','b']]
type(s2[['a','b']])
2.2.3 Dataframe
DataFrame是一个表格型的数据结构
- 每列可以是不同的值类型(数值、字符串、布尔值等)
- 既有行索引index,也有列索引columns
- 可以被看做由Series组成的字典
根据多个字典序列创建dataframe
data = {
'sdata':['zhoujie','xiaohai','xiaoming']
,'year':[2001,2002,2003]
,'pop':[1.5,1.7,3.6]
}
df = pd.DataFrame(data)
df
df.dtypes
df.columns
2.2.4 从dataframe中查询出Series
- 如果只查询一列、一行。返回的是pd.Series
- 如果查询多行、多列,返回的是pd.DataFrame
df['year']
2.2.5 查询dataframe的一行,结果是一个pd.Series
2.2.5 查询dataframe的多行,结果是一个pd.Dataframe
2.3 pandas查询数据的几种方法
- df.loc方法,根据行、列的标签值查询
- df.iloc方法,根据行、列的数字位置查询
- df.where方法
- df.query方法
.loc既能查询,又能覆盖写入,强烈推荐!
pandas使用df.loc查询数据的方法
- 使用单个label值查询数据
- 使用值列表批量查询
- 使用数值区间进行范围查询
- 使用条件表达式查询
- 调用函数查询
注意
- 以上查询方法,既适用于行,也适用于列
- 注意观察降维dataFrame>Series>值
读取数据
数据为北京2018年全年天气预报
使用单个label值查询数据
行或者列都可以只传入单个值,实现精准匹配