书籍资料:《深入浅出Pandas:利用Python进行数据处理与分析》
书籍数据集:
https://www.gairuo.com/file/data/dataset/team.xlsx
https://www.gairuo.com/file/data/dataset/sample-salesv3.xlsx
https://www.gairuo.com/file/data/dataset/GDP-China.csv
https://www.gairuo.com/file/data/dataset/countries-aggregated.csv
https://www.gairuo.com/file/data/dataset/iris.data
1.快速入门
pandas支持数据读取、查看、查找【筛选】、分组聚合、数学统计、可视化【GET,这点之前忽略了】、输出导出等。练习练习,沉住气,虽然这部分已经非常熟练了。
# %%
# 《深入浅出Pandas:利用Python进行数据处理与分析》配套数据集
data_urls = """
https://www.gairuo.com/file/data/dataset/team.xlsx
https://www.gairuo.com/file/data/dataset/sample-salesv3.xlsx
https://www.gairuo.com/file/data/dataset/GDP-China.csv
https://www.gairuo.com/file/data/dataset/countries-aggregated.csv
https://www.gairuo.com/file/data/dataset/iris.data
"""
# %%
# 下载数据集
import os
data_dir = './datasets/'
for url in data_urls.split():
os.system(f"wget -O {data_dir}/{url.rsplit('/')[-1]} {url}")
# %%
# 初步认识数据
import pandas as pd
df = pd.read_excel(os.path.join(data_dir,'team.xlsx')) # 读取数据,xlsx读取可能会缺依赖,根据提示conda或pip安装
n = 3 # 准备查看的数据量
df.head(n) # 查看前n条
# %%
df.tail(n) # 尾部n条
# %%
df.sample(n) # 随机三条
# %%
df.shape, df.dtypes, df.axes, df.columns # 分布为数据行列数、各字段数据类型、行列名、列名
# %%
df.info() # 数据的一些基本信息
# %%
df.describe() # 数据的数学统计信息:
# %%
df.set_index('name', inplace=True) # 将字段"name"建立为索引,inplace表示原表修改,pandas常用参数
df
# %%
# 列选择
df['Q1'] # 选择'Q1'列, 列选择方法
# or
df.Q1 # 需注意的是,当字段名Q1包含一些特殊字符,比如空格、:时,此方法失效
df[['Q1','Q2']] # 多列选择,此方法也可以用于交换不同列的顺序
# %%
# 行选择
df[df.index=='Ack'] # 前面已经将name字段标记为索引
# 支持分片,类似列表
df[:10] # 前10行
# %%
# 图,可视化
df.Q1.plot()
# %%
# 饼图
df.loc['Ben','Q1':'Q4'].plot.pie()
# %%
# 排序
df.sort_values(['Q1', 'Q2'], ascending=[False, True]) # 可单列,也可以多列排序
# %%
# 分组聚合
df.groupby(by='team').sum()
# 转置
df.groupby(by='team').sum()
# %%
df['total'] = df.apply(lambda x:sum(x['Q1':'Q4']), axis=1) # axis= 0 表示对横轴,axis=1表示对纵轴方向 数据进行操作,这里有点绕,横轴方向数据操作表现为对列操作[横向为各个列数据],纵轴方向数据操作表现为对行操作[纵向为行数据]
df
# %%
df.mean(axis=0) # axis默认为0,对横轴操作,返回各列的均值
df.mean(axis=1) # 纵轴操作,返回各行的均值
# or
df.mean(1)
2.数据结构
数据结构:组织数据、存储数据的方式。
Python:Python数据类型,数字、字符、列表、元组、字典、集合等。【熟悉和精通之间】
Numpy:高性能矩阵运算的课,Pandas的依赖,掌握该部分内容不是学习pandas的先决条件。【后续学习,科学计算的重要库】。
Numpy数据结构:ndarray【存储数据的多维数组】、ufunc【处理数组的函数】
Pandas数据结构:Series【带标签的一维数组】、DataFrame【二维数据结构,矩阵,有行列名】,重要,pandas的基础。
数据创建:可以从列表、字典等方法生成series和DataFrame
常见数据类型
- float,浮点型
- int,整型
- bool,布尔型
- 几个时间日期的类型:
- datetime64[ns]
- datetime64[ns,tz]
- timedelta64[ns]
- timedelta64[ns]
-category 【还未用过,盲区】
-object
-string
支持数据类型判断:
pd.api.types.is_bool_dtype(s) # 布尔判断,此类的类型判断还有很多