Eastsheng's Wiki

Pandas 基本操作

2021-11-05 20:04:28

[toc]


将DataFrame保存为MySQL

  • 要将pandas DataFrame保存到MySQL数据库中,可以使用Python的SQLAlchemy库来实现。下面是一系列的步骤来完成这个过程:

    1. 安装所需的库:确保已经安装了pandas、SQLAlchemy和MySQL驱动程序(如pymysql)。
    2. 导入所需的库:在代码中导入必要的库。
    1
    2
    import pandas as pd
    from sqlalchemy import create_engine
    1. 创建一个MySQL连接:使用SQLAlchemy创建一个MySQL连接。你需要根据你的数据库设置来修改下面的代码。确保将 usernamepasswordlocalhostportdatabase_name 替换为你自己的MySQL连接参数。
    1
    engine = create_engine('mysql+pymysql://username:password@localhost:port/database_name')
    1. 将DataFrame保存到数据库:使用 to_sql 函数将DataFrame保存到数据库中。确保将 df 替换成你要保存的DataFrame,table_name 替换成你想要在数据库中创建的表的名称。if_exists 参数可以设置为以下几个选项之一: - “fail”:如果表已经存在,则抛出一个异常(默认) - “replace”:如果表已经存在,则替换掉原有的表 - “append”:如果表已经存在,则将数据追加到表中index 参数设置为 False 可以在保存数据时避免将DataFrame的索引作为一个额外的列。
    1
    df.to_sql('table_name', con=engine, if_exists='replace', index=False)
    1. 整体的代码示例如下:
    1
    2
    3
    4
    5
    6
    7
    8
    import pandas as pd
    from sqlalchemy import create_engine

    # 创建一个MySQL连接
    engine = create_engine('mysql+pymysql://username:password@localhost:port/database_name')

    # 将DataFrame保存到数据库
    df.to_sql('table_name', con=engine, if_exists='replace', index=False)

DataFrame 基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
fm = pd.DataFrame(data)
print(fm)
# out
state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9
5 Nevada 2003 3.2
[Finished in 1.2s]

# slice
# 读取列
print(fm["state"]) #使用列标签
print(fm.state) #使用列标签
print(fm.iloc[:,0]) #切片

# 读取行
print(fm[0:2])
print(fm.loc[0:2])

# delete column
fm = fm.drop(["state"],axis=1)
print(fm)
# out
year pop
0 2000 1.5
1 2001 1.7
2 2002 3.6
3 2001 2.4
4 2002 2.9
5 2003 3.2
[Finished in 4.8s]

# delete row
fm = fm.drop([0],axis=0)
print(fm)
# out
year pop
1 2001 1.7
2 2002 3.6
3 2001 2.4
4 2002 2.9
5 2003 3.2

DataFrame.plot

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
fm = pd.DataFrame(data)
print(fm)
fm.plot(x="state",y="pop",figsize=(16,8),
kind='scatter',
# logx=True,
# logy=True,
# grid=True,
# legend=True,
# xlim=[0,100000],
# ylim=[-4000,4000],
# xlabel="Time(fs)",
# ylabel="Pressure(Pa)",
# fontsize=22,
)
plt.show()


DataFrame表格(列)拼接

concat

1
concat(objs, axis=0, join=‘outer’, join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False,copy=True)
  • 部分参数说明:
    axis:拼接轴方向,默认为0,沿行拼接;若为1,沿列拼接
    join:默认外联’outer’,拼接另一轴所有的label,缺失值用NaN填充;内联’inner’,只拼接另一轴相同的label;
    join_axes: 指定需要拼接的轴的labels,可在join既不内联又不外联的时候使用
    ignore_index:对index进行重新排序
    keys:多重索引
1
2
3
4
5
6
7
8
9
10
11
12
13
import pandas as pd
df_aa = pd.DataFrame({'zh':['zhang','li','wang','zhao'],
'hero':['达摩','典韦','曹操','李白'],
'score':['85','73','66','81']})
df_zz = pd.DataFrame({'en':['wang','zhao','Trump','Obama'],
'hero':['曹操','墨子','曹操','李白'],
'level':['青铜','白银','黄金','钻石']})
df_concat = pd.concat([df_aa,df_zz]) # 默认沿axis=0,join=‘out’的方式进行concat
df_igno_idx = pd.concat([df_aa,df_zz], ignore_index=True)
'''
# 重新设定index(效果类似于pd.concat([df1,df2]).reset_index(drop=True))
'''
df_col = pd.concat([df_aa,df_zz], axis=1)