python pandas库统计分析基础必备知识汇总(二)

简介: python pandas库统计分析基础必备知识汇总(二)

2.DataFrame

2.1创建一个DataFrame对象

2.1.1不指定index和columns

当不指定index和columns时,默认为0, 1, 2。

import pandas as pd
data = [[120, 115, 109], [101, 100, 112], [106, 110, 125]]
df = pd.DataFrame(data=data)
print(df)

在这里插入图片描述

2.1.2指定index和columns

import pandas as pd
data = [[120, 115, 109], [101, 100, 112], [106, 110, 125]]
index = [0, 1, 2]
columns = ['AAA', 'BBB', 'CCC']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)

在这里插入图片描述

2.1.3使用字典创建DataFrame

键为列名,值为该列数据组成的列表。值也可以是单个元素,表示该列都取该值。

import pandas as pd
df = pd.DataFrame({
   
    'AAA': [120, 101, 106],
    'BBB': [115, 100, 110],
    'CCC': [109, 112, 125],
    'DDD': 'ABCDEFG'
}, index=[0, 1, 2])

print(df)
<

在这里插入图片描述

2.2遍历DataFrame对象数据的每一列

for col in df.columns:
    series = df[col]
    print(series)

在这里插入图片描述

2.3索引与切片

2.3.1 loc标签索引

2.3.1.1获取单行数据

import pandas as pd
df = pd.DataFrame({
   
    'AAA': [120, 101, 106, 117, 114, 122],
    'BBB': [115, 100, 110, 125, 123, 120],
    'CCC': [109, 112, 125, 120, 116, 115],
    'DDD': 'ABCDEFG'
}, index=[1, 2, 3, 4, 5, 6])
print(df)
print("=======================")
print(df.loc[1])

df.loc[1]获取到标签索引为1的数据,在这里即第一行的。
在这里插入图片描述

2.3.1.2获取多行数据

print(df)
print("=======================")
print(df.loc[[1, 3]])

在这里插入图片描述

2.3.1.3切片连续多行数据

标签索引切片时左右边界的值都可以取。

print(df)
print("=======================")
print(df.loc[1:5])

在这里插入图片描述

2.3.2iloc位置索引

2.3.2.1获取某行数据

import pandas as pd
df = pd.DataFrame({
   
    'AAA': [120, 101, 106, 117, 114, 122],
    'BBB': [115, 100, 110, 125, 123, 120],
    'CCC': [109, 112, 125, 120, 116, 115],
    'DDD': 'ABCDEFG'
}, index=[1, 2, 3, 4, 5, 6])
print(df)
print("=======================")
print(df.iloc[1])

df.iloc[1]获取到第二行(下标为1)数据
在这里插入图片描述

2.3.2.2获取多行数据

print(df)
print("=======================")
print(df.iloc[[0, 2]])

在这里插入图片描述

2.3.2.3切片连续多行数据(左闭右开)

遵照左闭右开

print(df)
print("=======================")
print(df.iloc[1: 4])

在这里插入图片描述
某行(第二行)至最后一行

print(df)
print("=======================")
print(df.iloc[1:])

在这里插入图片描述
(或df.iloc[1::]写法也可)


2.3.3直接获取指定列数据

  • 直接传入列名即可获取

2.3.3.1获取单列

获取单列有两种写法如下,结果有所不同

print(df)
print("=======================")
print(df['AAA'])
print(type(df['AAA']))

在这里插入图片描述

print(df)
print("=======================")
print(df[['AAA']])
print(type(df[['AAA']]))

在这里插入图片描述
根据程序运行结果,df[‘AAA’]得到的是一个Series,而df[[‘AAA’]]得到的结果是一个DataFrame。

2.3.3.2获取多列

print(df)
print("=======================")
print(df[['AAA', 'CCC']])

在这里插入图片描述

2.3.4获取指定行、列数据

通过以下几个示例,来熟悉loc和iloc同时指定行和列时的用法。
对于loc和iloc,只有标签和位置索引的区别。同时指定行和列时,如果某个维度(行或列)的索引为离散的单个或多个元素,则需要额外加上方括号(loc[[2,4],[‘a’,‘c’]] 或 iloc[[5,8],[2,6]]);如果是切片形式的(形如a:b, a,b也可省略),则不需要额外的方括号(loc[2:4,‘a’:‘c’] 或 iloc[5:8,2:6])。

2.3.4.1 loc标签索引

获取索引为2的行到索引为4的行(两端都取),与列名为"AAA"的列和列名为"CCC"的列交叉的部分

print(df)
print("=======================")
print(df.loc[2:4, ['AAA', 'CCC']])

在这里插入图片描述
获取所有行中,列明为"AAA"和列明为“CCC”的部分

print(df)
print("=======================")
print(df.loc[:, ['AAA', 'CCC']])

在这里插入图片描述
获取所有行中,列名“BBB”及其后边的列的部分

print(df)
print("=======================")
print(df.loc[:, 'BBB':])   

在这里插入图片描述

print(df)
print("=======================")
print(df.loc[[1, 3], ['BBB', 'DDD']])

在这里插入图片描述

2.3.4.2 iloc位置索引

print(df)
print("=======================")
print(df.iloc[:, [1, 3]])

在这里插入图片描述

print(df)
print("=======================")
print(df.iloc[:, :2]) 

在这里插入图片描述

print(df)
print("=======================")
print(df.iloc[[2, 5], [1, 3]])

在这里插入图片描述

2.3.5 按指定条件获取(布尔索引)

使用loc还可以进行指定条件的筛选获取

执行以下代码

print(df)
print("=======================")
print(df['AAA'] > 110)
print(type(df['AAA'] > 110))

如图,输出了一个value为bool类型数据的Series对象。
在这里插入图片描述
可以使用该种形式的Series对DataFrame进行筛选

print(df)
print("=======================")
print(df.loc[df['AAA'] > 110])

在这里插入图片描述
也可以传入多个条件进行筛选。每个条件需要使用括号()括起来。
以获取’AAA’大于110且’CCC’大于115的为例:

print(df)
print("=======================")
print(df.loc[(df['AAA'] > 110) & (df['CCC'] > 115)])

在这里插入图片描述

2.4 增加数据

2.4.1 按列增加数据

2.4.1.1 直接添加

print(df)
print("=======================")
df['EEE'] = [140, 133, 145, 125, 126, 133]
print(df)

在这里插入图片描述
也可以使用loc添加
添加一整列时行索引必须是所有行,列索引是一个新的列名。添加的数据个数必须等于总行数。插入的数据在最后一列。

print(df)
print("=======================")
df.loc[:, 'FFF'] = [84, 99, 76, 50, 20, 66]
print(df)

在这里插入图片描述
如果行索引是部分行,且列索引已存在于原数据中,则效果为修改局部数据。

print(df)
print("=======================")
df.loc[1:4, 'CCC'] = [99, 76, 50, 20]
print(df)

在这里插入图片描述

使用insert()方法添加

在第1列后添加一个名为’SSS’的列,数据为s1中的数据。

print(df)
print("=======================")
s1 = [99, 89, 95, 84, 110, 104]
df.insert(1, 'SSS', s1)
print(df)

在这里插入图片描述

2.4.2 按行增加数据

2.4.2.1 增加一行

print(df)
print("=======================")
df.loc['100'] = [111, 132, 99, 123]
print(df)

在这里插入图片描述

2.4.2.2 增加多行数据

将新数据创建一个格式一致的、新的DataFrame,然后使用append方法追加在原数据后边。

print(df)
print("=======================")
df_insert = pd.DataFrame({
   'AAA': [102, 124, 133, 120, 115, 121],
                          'BBB': [110, 125, 140, 111, 117, 126],
                          'CCC': [112, 118, 122, 114, 136, 125],
                          'DDD': 'XYZ'}
                         , index=[10, 20, 30, 40, 50, 60])
df1 = df.append(df_insert)
print(df)
print("============================")
print(df1)

在这里插入图片描述
如图,使用append方法对一个DataFrame在后边追加一个DataFrame,不会改变原DataFrame,这一点不同于列表追加元素。

2.5 修改列名&索引

2.5.1修改列名

2.5.1.1 通过DataFrame的columns属性

print(df)
print("=======================")
df.columns = ['A1', 'B2', 'C3', 'V4']
print(df)

在这里插入图片描述

2.5.1.2 通过DataFrame的rename()方法

print(df)
print("=======================")
df.rename(columns={
   'AAA': 'A1', 'BBB': 'B2', 'CCC': 'C3'}, inplace=True)
print(df)

inplace参数表示是否修改原DataFrame,默认False不修改。
在这里插入图片描述

2.5.2 修改索引(index)

2.5.2.1 通过index属性

print(df)
print("=======================")
df.index = list('abcdef')
print(df)

在这里插入图片描述

2.5.2.2通过rename方法

通过rename方法也可以实现对索引的修改。
参数axis默认为0,表示对index操作,(所以这里不设置axis也可)除非像上边的例子中传入有columns参数则表示对列操作。

print(df)
print("=======================")
df.rename({
   1: 'a1', 2: 'b2', 3: 'c3', 4: 'd4'}, axis=0, inplace=True)
print(df)

在这里插入图片描述

2.6 修改数据

2.6.1 使用loc

修改整行数据
print(df)
print("=======================")
df.loc[3] = [111, 115, 109, 120]
print(df)
print("============================")
df.loc[3] = df.loc[3]+10
print(df)

在这里插入图片描述

修改整列数据
print(df)
print("=======================")
df.loc[:, 'CCC'] = [116, 104, 115, 120, 125, 124]
print(df)

在这里插入图片描述

修改指定某一数据
print(df)
print("=======================")
df.loc[3, 'BBB'] = 150
print(df)

在这里插入图片描述

2.6.2 使用iloc

修改整行数据
print(df)
print("=======================")
df.iloc[0, :] = [112, 120, 119, 126]         
print(df)

在这里插入图片描述

修改整列数据
print(df)
print("=======================")
df.iloc[:, 0] = [111, 118, 114, 102, 125, 130]
print(df)

在这里插入图片描述

修改指定某一数据
print(df)
print("=======================")
df.iloc[0, 0] = 150
print(df)

在这里插入图片描述

2.7 删除数据

2.7.1 删除某列

print(df)
print("=======================")
df.drop(['AAA'], axis=1, inplace=True)
print(df)

在这里插入图片描述

print(df)
print("=======================")
df.drop(columns='AAA', inplace=True)
print(df)

在这里插入图片描述

删除标签为’BBB’的,axis=1表示对列操作

print(df)
print("=======================")
df.drop(labels='BBB', axis=1, inplace=True)
print(df)

在这里插入图片描述

2.7.2 删除某行

删除标签为2,4的行,axis默认为0,默认对行操作。

print(df)
print("=======================")
df.drop([2, 4], inplace=True)
print(df)

在这里插入图片描述

print(df)
print("=======================")
df.drop(index=3, inplace=True)
print(df)

在这里插入图片描述

删除标签为4的,axis=0表示对行操作。

print(df)
print("=======================")
df.drop(labels=4, axis=0, inplace=True)
print(df)

在这里插入图片描述

2.7.3删除特定条件的行

删除字段’AAA’为120,101或114的行。

print(df)
print("=======================")
df.drop(index=df[df['AAA'].isin([120, 101, 114])].index, inplace=True)
print(df)

在这里插入图片描述
删除"BBB"字段小于120的行

print(df)
print("=======================")
df.drop(index=df[df['BBB'] < 120].index, inplace=True)
print(df)

在这里插入图片描述

2.8 打印DataFrame的简短摘要

print(df)
print("=======================")
print(df.info())

在这里插入图片描述

2.9 处理缺失值与重复值

2.9.1处理缺失值

2.9.1.1 准备缺失值

# 准备两个缺失值
import numpy as np
df.iloc[0, 0] = np.NaN
df.iloc[2, 2] = np.NaN
print(df)

在这里插入图片描述

2.9.1.2 删除该缺失值所在行

print(df)
print("====================")

# 不修改原df的写法
# df1 = df.dropna()
# print(df1)

# 修改原df的写法
df.dropna(inplace=True)
print(df)

在这里插入图片描述

2.9.1.3获取某字段没有缺失值 的行

print(df)
print("=============================")
df2 = df[df['AAA'].notnull()]
print(df2)

在这里插入图片描述

2.9.1.4 填充缺失值

以将缺失值填充为0为例

2.9.1.4.1 填充所有缺失值
print(df)
print("=============================")
df3 = df.fillna(0)
print(df3)

在这里插入图片描述

2.9.1.4.2 填充局部缺失值
print(df)
print("=============================")
df['AAA'] = df['AAA'].fillna(0)
print(df)

在这里插入图片描述

2.9.2 处理重复值

2.9.2.1准备数据

import pandas as pd
df = pd.DataFrame({
   
    'AAA': [120, 101, 106, 101, 101, 122],
    'BBB': [115, 100, 110, 100, 100, 120],
    'CCC': [109, 112, 125, 112, 112, 115],
    'DDD': 'ABCDEFG'
}, index=[1, 2, 3, 4, 5, 6])
print(df)

在这里插入图片描述

2.9.2.2 判断重复值

2.9.2.2.1 判断整行数据是否重复

将一行完全相同的判断为重复值,第一次出现的行不会被判定为重复值,第二次及以上次数重复出现的才会。

print(df)
print("=============================")
print(df.duplicated())

在这里插入图片描述

2.9.2.2.2 判断某字段数据是否重复

以字段"AAA"为例。

print(df)
print("=============================")
print(df['AAA'].duplicated())
# 或者
# print(df.duplicated(['AAA']))
print("=============================")
print(df.loc[df['AAA'].duplicated()])

在这里插入图片描述

2.9.2.3 去重

2.9.2.3.1 删除整行重复值

不更改原df

print(df)
print("=============================")
df1 = df.drop_duplicates()
print(df1)

在这里插入图片描述更改原df

print(df)
print("=============================")
df.drop_duplicates(inplace=True)
print(df)

在这里插入图片描述

2.9.2.3.2 删除某字段重复 的行
print(df)
print("=============================")
print(df.drop_duplicates(['AAA']))

在这里插入图片描述
如果要保留重复行中的最后一行(默认是第一行),须将参数keep设置为’last’:

print(df)
print("=============================")
print(df.drop_duplicates(['AAA'], keep='last'))

在这里插入图片描述

2.10设置索引

2.10.1 reindex

缺失值以0填充

from pandas import Series
s1 = Series([88, 60, 75], index=[1, 2, 3])
print(s1)
print("========================")
print(s1.reindex([1, 2, 3, 4, 5]))
print("========================")
# 重新设置索引,NaN以0填充
print(s1.reindex([1, 2, 3, 4, 5],fill_value=0))

在这里插入图片描述

缺失值向前/向后填充

from pandas import Series
# 从pandas引入Series对象,就可以直接使用Series对象了,如Series([88,60,75],index=[1,2,3])
s1 = Series([88, 60, 75], index=[1, 2, 3])
print(s1)
print("========================")
print(s1.reindex([1, 2, 3, 4, 5], method='ffill'))   # 向前填充
print("========================")
print(s1.reindex([1, 2, 3, 4, 5], method='bfill'))   # 向后填充

在这里插入图片描述

重新设置行索引、列索引和行列索引

import pandas as pd
data = [[110, 105, 99], [105, 88, 115], [109, 120, 130]]
index = ['001', '003', '005']
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print("===============================================")
# 通过reindex()方法重新设置行索引、列索引和行列索引
print(df.reindex(['001', '002', '003', '004', '005']))
print("===============================================")
print(df.reindex(columns=['语文', '物理', '数学', '英语']))
print("===============================================")
print(df.reindex(index=['001', '002', '003', '004', '005'], columns=['语文', '物理', '数学', '英语']))

在这里插入图片描述

2.10.2 set_index

2.10.2.1 设置某列为index

设置"AAA"为index

import pandas as pd
df = pd.DataFrame({
   
    'AAA': [120, 101, 106, 101, 101, 120],
    'BBB': [115, 100, 110, 100, 100, 120],
    'CCC': [109, 112, 125, 112, 112, 115],
    'DDD': 'ABCDEFG'
}, index=[1, 2, 3, 4, 5, 6])
print(df)
print("=============================")


# 设置“买家会员名”为行索引
df = df.set_index(['AAA'])
print(df)

在这里插入图片描述

2.10.2.2 设置drop=True

设置drop=True,是把原来的索引index列去掉,重置index。不设置该参数则原index会作为一列保留。

import pandas as pd
df = pd.DataFrame({
   
    'AAA': [120, 101, 106, 101, 101, 120],
    'BBB': [115, 100, 110, 100, 100, 120],
    'CCC': [109, 112, 125, 112, 112, 115],
    'DDD': 'ABCDEFG'
}, index=[101, 203, 304, 409, 511, 625])
print(df)
print("=============================")
df1 = df.dropna().reset_index()
print(df1)
print("=============================")
df2 = df.reset_index(drop=True)
print(df2)

在这里插入图片描述

2.11排序

2.11.1 sort_values()单列排序

ascending默认为True,表示升序。设置为False表示降序。
sort_values()也可以通过设定inplace参数来选择是否修改原df。

import pandas as pd
df = pd.DataFrame({
   
    'AAA': [120, 101, 106, 101, 101, 120],
    'BBB': [115, 100, 110, 100, 100, 120],
    'CCC': [109, 112, 125, 112, 112, 115],
    'DDD': 'ABCDEFG'
}, index=[1, 2, 3, 4, 5, 6])

print(df)
print("=============================")
df1 = df.sort_values(by='BBB', ascending=False)
print(df1)

在这里插入图片描述

2.11.2 sort_values()多列排序

多列排序按照给定列的先后顺序进行排序。

import pandas as pd
df = pd.DataFrame({
   
    'AAA': [120, 101, 106, 101, 101, 120],
    'BBB': [115, 100, 110, 100, 100, 120],
    'CCC': [109, 112, 125, 112, 112, 115],
    'DDD': 'ABCDEFG'
}, index=[1, 2, 3, 4, 5, 6])

print(df)
print("=============================")
df1 = df.sort_values(by=['AAA', 'BBB'])
print(df1)

如图,先升序排列"AAA","AAA"值相同的用"BBB"升序排列。
在这里插入图片描述

2.11.3 group_by()对统计结果排序

import pandas as pd
df = pd.DataFrame({
   
    'AAA': [120, 101, 106, 101, 101, 120, 115, 112, 117, 132],
    'BBB': [115, 100, 110, 100, 100, 120, 113, 114, 130, 111],
    'CCC': [109, 112, 125, 112, 112, 115, 120, 122, 110, 119],
    'DDD': ['A', 'B', 'A', 'C', 'B', 'C', 'B', 'A', 'C', 'A']
}, index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

print(df)
print("=============================")
df1 = df.groupby(["DDD"])["AAA"].sum().reset_index()
df2 = df1.sort_values(by='AAA', ascending=False)
print(df1)
print("=============================")
print(df2)

在这里插入图片描述

2.11.4横向排序 axis=1

以索引的标签为1,升序,为例:

import pandas as pd
df = pd.DataFrame({
   
    'AAA': [120, 101, 106, 101, 101, 120, 115, 112, 117, 132],
    'BBB': [115, 100, 110, 100, 100, 120, 113, 114, 130, 111],
    'CCC': [109, 112, 125, 112, 112, 115, 120, 122, 110, 119]
}, index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

print(df)
print("=============================")
# 按照索引值(标签的值)为1的行,升序排序
df1 = df.sort_values(by=1, ascending=True, axis=1)

print(df1)

在这里插入图片描述

2.11.5 排名 rank()

method参数可以取的值有"average", “first”, “max”, “min”,默认为"average"。

  • average表示排名时如果出现数值相等,则取平均排名,如降序排名,如果第二三四名数值大小相等,则都标记为第(2+3+4)/3=3,即第3名。
  • first 表示排名时如果出现数值相等,则参考在原数据的顺序进行排名
  • max表示排名时如果出现数值相等,则取其最大排名,如降序排名,如果第二三四名数值大小相等,则都标记为第4名。
  • min表示排名时如果出现数值相等,则取其最小排名,如降序排名,如果第二三四名数值大小相等,则都标记为第2名。
import pandas as pd
df = pd.DataFrame({
   
    'AAA': [120, 101, 106, 101, 101, 120, 115, 112, 117, 132],
    'BBB': [115, 100, 110, 100, 100, 120, 113, 114, 130, 111],
    'CCC': [109, 112, 125, 112, 112, 115, 120, 122, 110, 119]
}, index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

print(df)
print("=============================")

# 按“销量”列降序排序
df1 = df.sort_values(by='AAA', ascending=False)
# 顺序排名
df1['AAA_order'] = df1['AAA'].rank(method="first", ascending=False)
df2 = df1[['AAA', 'AAA_order']]
print(df2)

在这里插入图片描述

目录
相关文章
|
1天前
|
Python
python pandas学习(一)
该代码段展示了四个主要操作:1) 删除指定列名,如商品id;2) 使用正则表达式模糊匹配并删除列,例如匹配订单商品名称1的列;3) 将毫秒级时间戳转换为带有时区调整的日期时间格式,并增加8小时以适应本地时区;4) 将列表转换为DataFrame后保存为Excel文件,文件路径和名称根据变量拼接而成。
12 3
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
29 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
28天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
106 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
1月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
73 20
|
1月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
47 2
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
185 77
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
71 11
|
2月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
105 8
|
2月前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
88 4
|
3月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
226 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型

推荐镜像

更多