1. Pandas作用:一个提供快速、可扩展和展现数据结构的Python库。目标是成为使用Python处理时间和实际数据分析的模块。
有两种数据结构:Series和DataFrame。
1)Series是一种类似于NumPy数组的对象,由一组数据(各种NumPy数据类型)和与之相关的一组数据标签(索引)组成的。
2)DataFrame是一种表格型结构,含有一组有序的列,每一列可以是不同的数据类型。有行索引、列索引。数据以一个或多个二维块存放。
2. 安装方法:
1)通过conda安装
conda install pandas
2)通过pip安装
python3 -m pip install --upgrade pandas
3. 主要特性:
- 为浮点数和与浮点数精度丢失提供了简易的处理方法。
- 大数据(数字很大,不是通常意义的大数据)的处理。
- 自动而准确地处理数据队列。
- 功能强大。
- 能方便地转换不规则数据和差异数据。
- 智能地处理大数据集的切片、子集。
- 智能合并和连接数据集。
- 灵活地调整数据集。
- 从CSV、Excel和数据库中导入数据。
4. 用法(斜体字代表是参数)
- 导入库
import numpy as np
import pandas as pd
需要操作文件时
import os
1)生成数据表(DataFrame)
- 导入文件
df = pd.DataFrame(pd.read_csv('name.csv',header=1))
df = pd.DataFrame(pd.read_excel('name.xlsx'))
- 创建表
data是表中的数据,以key-value形式存储,key是列名,value是数据组成的数组。df = pd.DataFrame(<data>,<columns>)
- columns就是列名组成的一个数组。
2)查看数据表信息
- 维度查看:df.shape
- 数据基本信息查看:df.info()
- 每一列数据的格式:df.dtypes
- 某一列格式:df['A'].dtype
- 空值:df.isnull()
- 查看某一列空值:df['A'].isnull()
- 查看某一列的唯一值:df['A'].unique()
- 查看数据表的值:df.values
- 查看列名称:df.columns
- 查看前10行数据:df.head()
- 查看后10行数据:df.tail()
3) 数据表清洗
- 用'a'填充空值:df.fillna(value='a')
- 大小写转换:df['column1']=df['column1'].str.lower()
- 更改数据格式:df['column1'].astype('format')
- 更改列名称:df.rename(columns={'name1': 'name2'})
- 删除后出现的重复值:df['column1'].drop_duplicates()
- 删除先出现的重复值:df['column1'].drop_duplicates(keep='last')
- 数据替换:df['column1'].replace('a1', 'a2')
4)数据预处理
- 数据表合并:df_merge=pd.merge(df,df1,how='<inner>,<left>,<right>,<outer>')
- 设置索引列:df_merge.set_index('index')
- 按照特定列的值排序:df_merge.sort_values(by=['value'])
- 按照索引列排序:df_merge.sort_index()
- 如果column1的值大于多少,column2显示p1,否则p2: df_merge['column2']=np.where(df_inner['column1']>value, 'p1','p2')
- 对column1字段的值分为不同列,并创建数据表,索引值为df_merge的索引列column2,column3: pd.DataFrame((x.split('-') for x in df_merge['column1']),index=df_merge.index,columns=['column2','column3']))
5)数据提取
- loc函数按标签值进行提取:df.loc[num]
- iloc按位置进行提取:df.iloc[num1:num2] / df.iloc[:pos1,:pos2]
- ix可以同时按标签和位置进行提取:
6)数据筛选
- 与:df.loc[(df['column1']>value1) & (df['column2'] =='value2'),['column1','column2','column3','column4']]
- 或:df.loc[(df['column1']>value1) | (df['column2'] =='value2'),['column1','column2','column3','column4']]
- 非:df.loc[(df['column1'] != value1),['column1','column2','column3','column4']]
- query:df.query('column1 == ["value1", "value2"]')
7)数据汇总
- 计数器(groupby): df.groupby('column1').count()
- 透视表(pivote_table): pd.pivot_table(df,index=["column"]
8)数据统计
- 数据采样:第一参数为必填,第二、三个选填,二是手动设置采样哪一类,三是采样之后是否放回
- df.sample(n="amount", attr=set_attr, replace=true/false)
- 数据表描述性统计:df.describe().round(2).T
- 计算列标准差:df['column'].std()
- 计算字段间的协方差(不写参数则是所有字段之间的协方差):df['column1'].cov(df['column2'])
- 字段相关性分析:df['column1'].corr(df['column2'])
- 数据表相关性分析:df.corr()
9)数据输出
- 写入excel:df.to_excel('name1.xlsx', sheet_name='name2')
- 写入csv:df.to_csv('name.csv')