数据库处理必须掌握的Pandas方法--Python&MySQL

Pandas函数方法教程

简介 :andas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

Pandas 和 Series 的 describe() 方法

describe()函数用于生成描述性统计信息。 描述性统计数据:数值类型的包括均值,标准差,最大值,最小值,分位数等;类别的包括个数,类别的数目,最高数量的类别及出现次数等;输出将根据提供的内容而有所不同。
函数官网
详解

信息打印 info()

info()函数用于打印DataFrame的简要摘要,显示有关DataFrame的信息,包括索引的数据类型dtype和列的数据类型dtype,非空值的数量和内存使用情况。
函数官网
详解

查看前部数据 head()

默认查看前五行数据

 tb.head(n)	# 查看表tb的前n行

排序函数sort_values()

函数原理类似于SQL中的order by,可以将数据集依照某个字段中的数据进行排序,该函数即可根据指定数据也可根据指定的数据排序。
举例:
在这里插入图片描述在这里插入图片描述

查看、删除重复行

#查看重复的行有哪一些
df.duplicated()
#删除重复的行
df.drop_duplicates()

Pandas根据字段(列)查看具体有哪些重复的数据

去重函数drop_duplicates()

  1. 去除完全重复的行数据
data.drop_duplicates(inplace=True)
  1. 去除某几列重复的行数据
data.drop_duplicates(subset=['A','B'],keep='first',inplace=True)

subset: 列名,可选,默认为None

keep: {‘first’, ‘last’, False}, 默认值 ‘first’

  • first: 保留第一次出现的重复行,删除后面的重复行。
  • last: 删除重复项,除了最后一次出现。
  • False: 删除所有重复项。

inplace:布尔值,默认为False,是否直接在原数据上删除重复项或删除重复项后返回副本。(inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。)

错误写法:
data=data.drop_duplicates(subset=['A','B'],keep='first',inplace=True)
inplace=True就会在原数据上进行修改了,不需要’data=’。上面代码会将data变成NoneType。

此函数说明参考博客:https://blog.csdn.net/dzysunshine/article/details/100022994

设置索引set_index( )

DataFrame可以通过set_index方法,可以设置单索引和复合索引。

DataFrame.set_index(keys, drop=True, append=False, inplace=False,verify_integrity=False) 
  • 第一个参数是要作为索引的列名,可以设置多个(以列表形式)
DataFrame.set_index(["name", "Id"], inplace=True)
  • 第二个参数是inplace,决定是否创建副本:为False则创建副本;为True则在原数据集修改
  • 参数drop–是否删除作为索引的列,默认True;
    append–是否将新的列添加到索引中且不替换已有索引,默认False

append添加新索引,drop为False,inplace为True时,索引将会还原为列

列转行unstack()

stack函数会将数据从”表格结构“变成”花括号结构“,即将其行索引变成列索引,反之,unstack函数将数据从”花括号结构“变成”表格结构“,即要将其中一层的列索引变成行索引。–来自博客:https://www.cnblogs.com/bambipai/p/7658311.html
DataFrame的创建有多种方式,不过最重要的还是根据dict进行创建,以及读取csv或者txt文件来创建。

pandas中的Series对象有一个方法叫做unstack,调用一个具有二级索引的Series对象的unstack方法,会得到一个DataFrame对象。其索引就是Series对象的一级索引,列就是Series对象的二级索引。–*--来自博客https://www.cnblogs.com/traditional/p/11967360.html

分组groupby()

pandas提供了一个灵活高效的groupby功能,它使你能一种自然地方式对数据集进行切片,切换,摘要等操作。
根据一个或者多个键(可以是函数可以是数组或者DataFrame列名)拆分pandas对象。计算分组摘要统计,
如计数、平均数、标准差、或者用户自定义的函数

PS:describe()描述组内数据的基本统计量,unstack()索引重排-----使结果更便于对比查看
groupby()能做什么?

  1. df.groupby(col),返回一个按列进行分组的groupby对象;
  2. df.groupby([col1,col2]),返回一个按多列进行分组的groupby对象;
  3. df.groupby(col1)[col2]或者df[col2].groupby(col1),两者含义相同,返回按列col1进行分组后,col2的值;

常用功能:

  • 用 first(),tail() 截取每组前后几个数据,默认5
  • 用 filter() 对分组进行过滤,保留满足()条件的分组
  • 用 apply() 对每组进行(自定义)函数运算 DataFrame的很多函数可以直接运用到Groupby对象上: 在这里插入图片描述
    agg()实现分组多个运算 sql df.groupby( ["班级","性别"]).agg([np.sum, np.mean, np.std]) # 一次计算了三个

参考自:https://www.cnblogs.com/Yanjy-OnlyOne/p/11217802.html

分组之后统计一列的不同值 nunique()

需求:loan_type有多个取值,分别记数不同取值下有多少个不重复的report_id
即先按loan_type分组,然后统计report_id列里没有重复值的数据

model_df.groupby("loan_type").nunique()['report_id']

一个nunique()示例

transform()

将刚刚分析出的数据与原始数据加工到一起,因为新旧数据的长度是不一样的。

设置标签前缀add_prefix()

DataFrame.add_prefix(prefix)

带有字符串前缀的前缀标签。

对于Series,行标签是前缀的。对于DataFrame,列标签是前缀的。
在这里插入图片描述
在这里插入图片描述

设置后缀标签 add_suffix()

DataFrame.add_suffix(suffix)

带有字符串后缀的后缀标签。

对于Series,行标签加后缀。对于DataFrame,列标签加后缀。
在这里插入图片描述

判断空:isna()

场景:
dataframe的某一列id有很多空值,要筛选出不为空的数据:

df = dataframe[dataframe['report_id'].isna() == False]

类似函数isnull(),还有个isnan()
总结一下:

  • numpy里边查找NaN值的话,就用np.isnan()。
  • pandas里边查找NaN值的话,要么.isna(),要么.isnull()

关于数据表合并

python数据表的合并(python pandas join() 、merge()和concat()的用法)

合并dataframe merge()

用数据库样式的联接合并DataFrame或命名的Series对象。

联接在列或索引上完成。如果在列上连接列,则DataFrame索引将被忽略。否则,如果在索引上连接索引或在一个或多个列上建立索引,则将传递索引。

DataFrame.merge(self, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

参数详细说明

join()

在索引或键列上与其他DataFrame连接列。通过传递列表,有效地通过索引连接多个DataFrame对象.

DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

在这里插入图片描述

连接函数 CONCAT ()

https://baijiahao.baidu.com/s?id=1595349117525189591&wfr=spider&for=pc

CONCAT_WS()

CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。 第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

删除某列

通过pandas删除列:

1.del df[‘columns’] #改变原始数据

2.df.drop(‘columns’,axis=1)#删除不改表原始数据,可以通过重新赋值的方式赋值该数据

3.df.drop(‘columns’,axis=1,inplace=‘True’) #改变原始数据

df.drop(columns=["handsome","smart"])#删除列名为handsome和smart的整列

tolist()

作用:将数组(array),矩阵(matrix)转化为列表

import pandas as pd
df = pd.DataFrame({'a':[1,3,5,7,4,5,6,4,7,8,9],
                   'b':[3,5,6,2,4,6,7,8,7,8,9]})
df['a'].values.tolist()
#[1, 3, 5, 7, 4, 5, 6, 4, 7, 8, 9]

#or you can just use

df['a'].tolist()
#[1, 3, 5, 7, 4, 5, 6, 4, 7, 8, 9]

#To drop duplicates you can do one of the following:

df['a'].drop_duplicates().values.tolist()
#[1, 3, 5, 7, 4, 6, 8, 9]
 list(set(df['a'])) # as pointed out by EdChum
 #[1, 3, 4, 5, 6, 7, 8, 9]

#convert df to list[list]

df.values.tolist()

#conver series to list

Series.tolist()

numpy的例子:
在这里插入图片描述

dataframe对行列求和并添加行或列

计算各行数据总和并作为新列添加到末尾

df['Col_sum'] = df.apply(lambda x: x.sum(), axis=1)

计算各列数据总和并作为新行添加到末尾

df.loc['Row_sum'] = df.apply(lambda x: x.sum())

** 详细代码及例子说明 **

指定列求和

code_table_data['权重'] = code_table_data.iloc[:,3:6].sum(axis=1)

解释:
code_table_data[‘权重’] 为该数据设置新的一列

code_table_data.iloc[:,3:6] 为指定该数据哪些列需要求和

sum(axis=1) 为指定聚合函数并设置按行或列进行求和

其他

博客:Pandas中的dataframe操作

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值