我面对一个我以前从未观察过的函数内部数据框的修改.有没有办法处理这个并且没有修改初始数据帧?
In[30]: def test(df):
df['tt'] = np.nan
return df
In[31]: dff = pd.DataFrame(data=[])
In[32]: dff
Out[32]:
Empty DataFrame
Columns: []
Index: []
In[33]: df = test(dff)
In[34]: dff
Out[34]:
Empty DataFrame
Columns: [tt]
Index: []
Run Code Online (Sandbox Code Playgroud) 我必须使用不同的数据在1到500的循环中绘制并保存plot,但由于Matplot lib而导致内存泄漏.有人知道如何处理这个问题吗?
这里的简单案例:
import sys
import gc
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import pandas as pd
pdindex = pd.date_range(start='01/01/2013', freq='15min', end='01/01/2019')
df = pd.DataFrame({'test':np.random.normal(0,1,len(pdindex))}, index=pdindex)
def memplot_plot(df, i):
df.test.plot()
plt.title('graph' + str(i))
plt.savefig(str(i) + '.png', dpi=144)
plt.close()
for i in range(1, 100):
print '*******************************'
print 'i : ' + str(i)
print len( gc.get_objects())
print sys.getsizeof(gc.get_objects())
memplot_plot(df, i)
gc.collect()
Run Code Online (Sandbox Code Playgroud)
输出是(i = 6时的内存错误):
*******************************
i : 1
74682
325680
*******************************
i : 2
290627
1190248
******************************* …Run Code Online (Sandbox Code Playgroud) 当我尝试使用cx_freeze编译hello.py文件时,我得到pandas 0.15.2的以下错误,但0.15.1没有错误.
有人知道如何纠正它吗?
我已经使用include_files函数包含dateutil/zoneinfo文件,但问题仍然存在.
hello.py:
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
print 'hello world'
df_dates = pd.date_range(start='01/01/2013', freq='H', periods=100)
df = pd.DataFrame(range(len(df_dates)), index=df_dates)
print df
print df.info()
df.plot()
plt.savefig('test.png')
plt.show(block=False)
Run Code Online (Sandbox Code Playgroud)
setup.py:
includes = ['dateutil.zoneinfo', 'pandas'] # nommer les modules non trouves par cx_freeze
excludes = []
packages = ['os', 'matplotlib.backends.backend_qt4agg', 'dateutil', 'dateutil.zoneinfo', 'pandas']
# copier les fichiers non-Python et/ou repertoires et leur contenu:
def include_files():
path_base = "C:\\Anaconda\\Lib\\site-packages\\dateutil\\zoneinfo\\"
skip_count = len(path_base)
zip_includes …Run Code Online (Sandbox Code Playgroud) 我在服务器上有一个数据库,我需要通过SSH访问.现在我通过使用命令行来获取数据来处理数据库.
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='XX.XX.XX', username='user', password='pass', port = YYY)
query = "mysql -u " + username_sql + " -p" + password_sql +" dbb -e \"" + sql_query + "\""
ssh.exec_command(query.decode('string_escape'))
ssh.close()
Run Code Online (Sandbox Code Playgroud)
有没有办法用SQLAlchemy来提高效率,所以我可以直接使用pandas DataFrames?
from sqlalchemy import create_engine
engine = create_engine(
"mysql://username_sql:password_sql@localhost/dbb")
Run Code Online (Sandbox Code Playgroud) 我尝试使用 Paramiko 和 ssh 来备份服务器以调用tar命令。当文件数量有限时,一切正常,但当文件夹很大时,脚本会无休止地等待。下面的测试告诉我问题出在标准输出的大小上。
有没有办法纠正它并执行这种命令?
案例大输出:
query = 'cd /;ls -lshAR -h'
chan.exec_command(query)
while not chan.recv_exit_status():
if chan.recv_ready():
data = chan.recv(1024)
while data:
print data
data = chan.recv(1024)
if chan.recv_stderr_ready():
error_buff = chan.recv_stderr(1024)
while error_buff:
print error_buff
error_buff = chan.recv_stderr(1024)
exist_status = chan.recv_exit_status()
if 0 == exist_status:
break
Run Code Online (Sandbox Code Playgroud)
结果是(不行 - 阻止 - 死??)
query = 'cd /;ls -lshAR -h'
chan.exec_command(query)
while not chan.recv_exit_status():
if chan.recv_ready():
data = chan.recv(1024)
while data:
print data
data = chan.recv(1024)
if chan.recv_stderr_ready(): …Run Code Online (Sandbox Code Playgroud) 我尝试安装rails但我遇到以下错误.
有人知道如何解决它吗?
C:\Users\Utilisateur>gem -v
2.0.14
C:\Users\Utilisateur>gem install rails
ERROR: Could not find a valid gem 'rails' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - no such name (htt
ps://rubygems.org/latest_specs.4.8.gz)
C:\Users\Utilisateur>gem install rails --source http://rubygems.org
ERROR: Could not find a valid gem 'rails' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - no such name (htt
ps://rubygems.org/latest_specs.4.8.gz)
Unable to download data from http://rubygems.org/ - no such name (http
://rubygems.org/latest_specs.4.8.gz)
Run Code Online (Sandbox Code Playgroud) 我尝试更改多索引DataFrame的时区但是我得到一个冻结列表错误.有人知道怎么办吗?
>>> array = [('s001', d) for d in pd.date_range(start='01/01/2014', end='01/01/2015', freq='H')] + [('s002', d) for d in pd.date_range(start='01/01/2014', end='01/01/2015', freq='H')]
>>> index = pd.MultiIndex.from_tuples(array, names=['sce', 'DATES'])
>>> df = pd.DataFrame(np.random.randn(len(index)), index=index)
>>> df.index.levels[1] = df.index.levels[1].tz_localize('Etc/GMT-1', ambiguous = 'NaT')
Run Code Online (Sandbox Code Playgroud)
回溯(最近一次调用最后一次):File"C:\ Pythons\lib\python\pandas-0.15.0rc1-py2.7-win32.egg\pandas\core\base.py"中的文件"",第1行,第221行,在_disabled self中.上课.name)TypeError:'FrozenList'不支持可变操作.
由于我将这段代码调用了1000多次,有没有办法优化这段代码需要1.73秒?
def generate():
S0 = 0
T = 1.
nt = 100000
lbd = 500.
mu = 0
sigma = 1.
dt = T/nt
St = [S0] * nt
sqrtdt = np.sqrt(dt)
dBt = np.random.normal(0, sqrtdt, nt)
for k in xrange(1, nt):
dSt = lbd * (mu - St[k-1]) * dt + sigma * dBt[k]
St[k] = St[k-1] + dSt
return St
Run Code Online (Sandbox Code Playgroud) python ×7
pandas ×4
paramiko ×2
ssh ×2
cx-freeze ×1
gem ×1
matplotlib ×1
memory-leaks ×1
multi-index ×1
mysql ×1
optimization ×1
performance ×1
python-2.7 ×1
ruby ×1
sqlalchemy ×1