这是我关于stackoverflow的第一个问题.放轻松我吧!
我有两个不同采集系统同时采集的数据集,采样率不同.一个是非常规则的,另一个则不是.我想创建一个包含两个数据集的数据帧,使用规则间隔的时间戳(以秒为单位)作为两者的参考.不规则采样的数据应在规则间隔的时间戳上进行插值.
这是一些玩具数据,展示了我正在尝试做的事情:
import pandas as pd
import numpy as np
# evenly spaced times
t1 = np.array([0,0.5,1.0,1.5,2.0])
y1 = t1
# unevenly spaced times
t2 = np.array([0,0.34,1.01,1.4,1.6,1.7,2.01])
y2 = 3*t2
df1 = pd.DataFrame(data={'y1':y1,'t':t1})
df2 = pd.DataFrame(data={'y2':y2,'t':t2})
Run Code Online (Sandbox Code Playgroud)
df1和df2看起来像这样:
df1:
t y1
0 0.0 0.0
1 0.5 0.5
2 1.0 1.0
3 1.5 1.5
4 2.0 2.0
df2:
t y2
0 0.00 0.00
1 0.34 1.02
2 1.01 3.03
3 1.40 4.20
4 1.60 4.80
5 1.70 5.10
6 2.01 6.03 …Run Code Online (Sandbox Code Playgroud) 注意:这在1.4.3或更高版本中已得到修复
我使用Seaborn绘图包,我刚刚升级到最新版本的Matplotlib.现在,带有点符号的图不再呈现.之前功能正常的代码会创建空白图,但仅在导入Seaborn时才会创建.这是一些示例代码:
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
print matplotlib.__version__
Run Code Online (Sandbox Code Playgroud)
Matplotlib版本:
1.4.2
Run Code Online (Sandbox Code Playgroud)
创建一个没有seaborn的情节:
x = np.linspace(0,2,101)
y = np.sin(2*np.pi*x)
plt.plot(x,y,'.')
Run Code Online (Sandbox Code Playgroud)
进口seaborn,打印版本:
import seaborn as sns
print sns.__version__
Run Code Online (Sandbox Code Playgroud)
Seaborn版本:
0.4.0
Run Code Online (Sandbox Code Playgroud)
使用seaborn导入创建线图:
plt.plot(x,y,'-')
Run Code Online (Sandbox Code Playgroud)
使用seaborn导入创建点图会产生一组空白轴:
plt.plot(x,y,'.')
Run Code Online (Sandbox Code Playgroud)
上面的所有内容都是在IPython笔记本中完成的,但我只是在Spyder中尝试了以下相同的结果:
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
print matplotlib.__version__
x = np.linspace(0,2,101)
y = np.sin(2*np.pi*x)
plt.figure()
plt.plot(x,y,'.')
import seaborn as sns
print sns.__version__
plt.figure()
plt.plot(x,y,'-')
plt.figure()
plt.plot(x,y,'.')
plt.show()
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
我刚刚升级到IPython Notebook 3.0版,它禁用了seaborn的格式化.这是一些复制问题的示例代码
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
data = np.random.randn(100)
fig,ax = plt.subplots(figsize = (11,8.5))
ax.plot(data)
Run Code Online (Sandbox Code Playgroud)
这段代码在IPython Notebook V2.4.1中运行得很好(参见http://nbviewer.ipython.org/gist/anonymous/71733c24a68ee464ca40),但在IPython Notebook v3.0中,轴变得不可见(参见http:// nbviewer. ipython.org/gist/anonymous/7525146b07709206908c).
奇怪的是,在V3中,当我切换seaborn导入和matplotlib内联魔法的顺序时,情节通常在我第一次运行时渲染,然后如果我重新运行,则轴和网格线消失.所以它似乎与内联魔法禁用seaborn属性有关.
除了在第一次没有重新执行我的导入之外的任何变通办法吗?
我正在尝试使用 Pandas (v1.3.4)、SQLAlchemy (v1.4.26) 和 PyMySQL (v1.0.2) 写入 MySQL 数据库。我可以使用 pandas 创建一个新表(称为“test_table”)to_sql方法创建一个新表(称为“test_table”),但随后尝试写入同一个表会给出:
OperationalError: (pymysql.err.OperationalError) (1050, "Table 'test_table' already exists")
Run Code Online (Sandbox Code Playgroud)
我之前在 SQLite 中完成过此操作,所以我不确定为什么它在 MySQL 中不起作用。这是我的语法问题,还是数据库服务器配置中可能需要更改某些内容?
这是我正在使用的代码。
首先,导入并建立与数据库服务器的连接:
from sqlalchemy import create_engine
import pymysql
import pandas as pd
sqlEngine = create_engine('mysql+pymysql://username:password@127.0.0.1', pool_recycle=3600)
con = sqlEngine.connect()
Run Code Online (Sandbox Code Playgroud)
建立具体的数据库名称:
sql = '''
USE my_database
'''
con.execute(sql);
Run Code Online (Sandbox Code Playgroud)
生成一个条目并写入名为的新表test_table:
entry = pd.DataFrame({
'PersonID': 0,
'LastName': 'smith',
'FirstName': 'joe',
}, index=[0])
entry.to_sql('test_table', con, if_exists='append')
Run Code Online (Sandbox Code Playgroud)
验证我的条目是否已进入表中:
entry = pd.DataFrame({
'PersonID': 0,
'LastName': 'smith',
'FirstName': 'joe', …Run Code Online (Sandbox Code Playgroud) python ×4
matplotlib ×2
pandas ×2
seaborn ×2
ipython ×1
mysql ×1
numpy ×1
pymysql ×1
sqlalchemy ×1