目录
- 1 使用pandas读取写入csv, tsv文件数据 #read_excel #read_csv #to_excel #to_csv
- 2 pandas操作数据库
- 3 #Series 一维数组
- 4 #DataFrame 二维数组
- 4.1 创建DataFrame
- 4.2 获取行和列 #todo
- 4.3 操作二维表
- 4.3.1 删除指定行、指定列 #drop
- 4.3.2 行列转置 #stack #unstack #转置 #dropna
- 4.3.3 字段排序 #sort_values
- 4.3.4 修改列值,添加列 #Series
- 4.3.5 复制表 #copy
- 4.3.6 查看表信息 #info #index #columns #describe
- 4.3.7 #head #tail 看前面和后面部分的记录
- 4.3.8 #unique #nunique 唯一值
- 4.3.9 #count #value_counts 非空记录数
- 4.3.10 统计每列的空值数 #NULL #空值 #isnull
- 4.3.11 填充空值 #fillna #空值 #null
- 4.3.12 替换指定值,填充空值 #replace #nan
- 4.3.13 删掉有空值的记录 #dropna
- 4.4 查询二维表
- 5 #concat 合并表 #合并
- 6 #merge 合并表 #合并
- 7 #分组 #groupby
1 使用pandas读取写入csv, tsv文件数据 #read_excel #read_csv #to_excel #to_csv
pandas库可以使用numpy的库的内容
安装pandas
pip install pandas
pip install openpyxl
导入pandas
import pandas as pd
读取到的表数据类型为DataFrame
windows路径\要改成/,如D:\
要改成E:\
dfa = pd.read_excel('E:/system_files/Desktop/6月品牌_qbt.xlsx') # 读取表
dfa.to_excel('E:/system_files/Desktop/6月品牌_qbt.xlsx') # 输出表
dfa.to_excel('E:/system_files/Desktop/6月品牌_qbt.xlsx',index=False) # 不输出索引index
2 pandas操作数据库
pip install PyMySQL
pip install pandas
pip install sqlalchemy
pip install openpyxl
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('mysql+pymysql://apollo-rw:QBT094bt@localhost:2039')
sql = '''
SELECT MID as 'ali22_2 mid', COUNT(*)
FROM apollo.member_login
WHERE MID IN (select *
from test_my.ali22)
AND created >= '2022-02-01'
AND created < '2022-03-01'
AND is_login = 1
GROUP BY MID;
'''
ali22_2 = pd.read_sql_query(sql, engine)
3 #Series 一维数组
3.1 创建Series
series是dataframe的其中一列,一个series就是一列(series自带索引列,和数值、数值列表不同)
3.1.1 用列表创建Series #list
3.1.2 用字典创建Series #dict
3.2 操作Series
3.3 Series支持下标、切片
4 #DataFrame 二维数组
4.1 创建DataFrame
4.2 获取行和列 #todo
4.3 操作二维表
4.3.1 删除指定行、指定列 #drop
axis
不会改变原表数据
删除指定列:
4.3.1.1 直接对原表操作
注意:inplace=True
会删除原表的数据
4.3.2 行列转置 #stack #unstack #转置 #dropna
da.stack(dropna=False).unstack(0)
4.3.3 字段排序 #sort_values
4.3.4 修改列值,添加列 #Series
即修改或添加series
4.3.5 复制表 #copy
4.3.6 查看表信息 #info #index #columns #describe
4.3.6.1 修改列名
4.3.7 #head #tail 看前面和后面部分的记录
4.3.8 #unique #nunique 唯一值
unique只能用于单列
4.3.9 #count #value_counts 非空记录数
4.3.10 统计每列的空值数 #NULL #空值 #isnull
info()
能查看每列的非空字段数
4.3.11 填充空值 #fillna #空值 #null
4.3.12 替换指定值,填充空值 #replace #nan
需要引入import numpy as np
4.3.13 删掉有空值的记录 #dropna
4.4 查询二维表
4.4.1 查询表中指定的记录 #索引 #loc #iloc
4.4.1.1 条件查询
4.4.1.1.1 条件查询实现in和not in #isin #in
4.4.1.2 例子:loc,iloc切片查询
4.4.1.3 例子:loc,iloc查询
4.4.2 排除指定列conc
5 #concat 合并表 #合并
concat只有两种表连接方式: 上下合并
,左右合并
5.1 上下合并,默认值
concat擅长上下合并记录
concat可以一次拼接多个表,放入参数列表即可
5.1.1 上下合并后,重建索引 #reset_index
如果不改变原表,使用:da.reset_index(drop=True)
如果要操作原表,使用:da.reset_index(inplace= True,drop=True)
方式一:
5.2 左右合并
使用keys后,列名会改变,不建议使用keys
5.2.1 重建索引,消除索引对concat的影响
注意:左右合并时,两张表的索引不同,对concat有影响,可以通过重建索引,来消除索引的影响
(索引不同,对merge无影响)
6 #merge 合并表 #合并
merge 适合左右合并的情况
两张表的索引不同,会逐行根据key进行merge操作
6.1 指定左右表的列进行合并 #left_on #right_on
6.2 merge的4种连接方式 #how
6.2.1 #inner 内连接,key列的的交集
6.2.2 #outer 外连接,key列的并集
6.2.3 #left 左连接,使用左边的key列
类似于mysql的left join,只要左表的key
6.2.4 #right 右连接,使用右边的key列
类似于mysql的 right join,只要右表的key