我的数据库超过600 GB,我目前的数量只有1 TB,这可能限制了我的选择.
我的配置文件在这里:
/etc/postgresql/9.6/main
Run Code Online (Sandbox Code Playgroud)
我的数据库在这里:
/mnt/1TB/postgresql/9.6/main
Run Code Online (Sandbox Code Playgroud)
编辑 - 本指南适合我.我需要做的唯一的补充是手动下载libicu55并安装它,我必须为我的/ tmp /文件夹授予postgres 1777权限.我还将数据文件夹保存到不同的驱动器,所以我不得不使用命令:
pg_upgradecluster -m upgrade 10 main /mnt/1TB/postgresql/10
Run Code Online (Sandbox Code Playgroud)
https://gist.github.com/delameko/bd3aa2a54a15c50c723f0eef8f583a44
我做了一个小的Flask应用程序,我希望用户能够使用他们的Windows NT ID进行身份验证.我不是IT团队的一员,因此我对此领域的洞察力有限,而我的IT团队对Python没有经验.
配置这个有多容易?我试着做一些谷歌搜索,我看到了LDAP模块和Flask-Security.我希望有一个快速指南或指向一个特定的方向.
谢谢!
我正在关注熊猫的风格指南,它运作得很好.
如何通过Outlook使用to_html命令保留这些样式?文档似乎有点缺乏我.
(df.style
.format(percent)
.applymap(color_negative_red, subset=['col1', 'col2'])
.set_properties(**{'font-size': '9pt', 'font-family': 'Calibri'})
.bar(subset=['col4', 'col5'], color='lightblue'))
import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.Subject = subject_name
mail.HTMLbody = ('<html><body><p><body style="font-size:11pt;
font-family:Calibri">Hello,</p> + '<p>Title of Data</p>' + df.to_html(
index=False, classes=????????) '</body></html>')
mail.send
Run Code Online (Sandbox Code Playgroud)
to_html文档显示我可以在to_html方法中放入一个类命令,但我无法弄明白.看起来我的数据帧似乎没有我指定的风格.
如果我尝试:
df = (df.style
.format(percent)
.applymap(color_negative_red, subset=['col1', 'col2'])
.set_properties(**{'font-size': '9pt', 'font-family': 'Calibri'})
.bar(subset=['col4', 'col5'], color='lightblue'))
Run Code Online (Sandbox Code Playgroud)
然后df现在是一个Style对象,你不能使用to_html.
编辑 - 这是我目前正在修改我的表格.这有效,但我无法保留熊猫提供的.style方法的很酷的功能.
email_paragraph = """
<body style= "font-size:11pt; font-family:Calibri; text-align:left; margin: 0px auto" >
"""
email_caption = """ …
Run Code Online (Sandbox Code Playgroud) 我每天在Postgres数据库中加载大约2到250万条记录.
然后,我使用pd.read_sql读取此数据,将其转换为数据帧,然后进行一些列操作和一些次要合并.我将此修改后的数据保存为单独的表供其他人使用.
当我做pd.to_sql时,它需要永远.如果我保存一个csv文件并在Postgres中使用COPY FROM,整个过程只需几分钟,但服务器在一台单独的机器上,在那里传输文件很痛苦.
使用psycopg2,看起来我可以使用copy_expert从批量复制中受益,但仍然使用python.我希望,如果可能的话,避免编写实际的csv文件.我可以在内存中使用pandas数据帧吗?
这是我的熊猫代码的一个例子.我想添加copy_expert或其他东西,以便在可能的情况下更快地保存这些数据.
for date in required_date_range:
df = pd.read_sql(sql=query, con=pg_engine, params={'x' : date})
...
do stuff to the columns
...
df.to_sql('table_name', pg_engine, index=False, if_exists='append', dtype=final_table_dtypes)
Run Code Online (Sandbox Code Playgroud)
有人可以用示例代码帮助我吗?我更喜欢使用熊猫,在内存中做它会很好.如果没有,我将只写一个csv临时文件并以这种方式执行.
编辑 - 这是我的最终代码.每个日期(数百万行)只需要几百秒而不是几个小时.
to_sql ="""COPY%s FROM STDIN WITH CSV HEADER"""
def process_file(conn, table_name, file_object):
fake_conn = cms_dtypes.pg_engine.raw_connection()
fake_cur = fake_conn.cursor()
fake_cur.copy_expert(sql=to_sql % table_name, file=file_object)
fake_conn.commit()
fake_cur.close()
#after doing stuff to the dataframe
s_buf = io.StringIO()
df.to_csv(s_buf)
process_file(cms_dtypes.pg_engine, 'fact_cms_employee', s_buf)
Run Code Online (Sandbox Code Playgroud) 有哪些方法可用于合并时间戳不完全匹配的列?
DF1:
date start_time employee_id session_id
01/01/2016 01/01/2016 06:03:13 7261824 871631182
Run Code Online (Sandbox Code Playgroud)
DF2:
date start_time employee_id session_id
01/01/2016 01/01/2016 06:03:37 7261824 871631182
Run Code Online (Sandbox Code Playgroud)
我可以加入['date','employee_id','session_id'],但有时同一个员工在同一天会有多个相同的会话,这会导致重复.我可以删除发生这种情况的行,但如果我这样做,我将失去有效的会话.
如果DF1的时间戳距离DF2的时间戳<5分钟,并且session_id和employee_id也匹配,是否有一种有效的加入方式?如果存在匹配记录,则时间戳将始终稍晚于DF1,因为事件在将来某个时间点触发.
['employee_id', 'session_id', 'timestamp<5minutes']
Run Code Online (Sandbox Code Playgroud)
编辑 - 我以为有人会遇到这个问题.
我在想这样做:
创建一个10分钟的间隔字符串以加入文件
Run Code Online (Sandbox Code Playgroud)df1['low_time'] = df1['start_time'] - timedelta(minutes=5) df1['high_time'] = df1['start_time'] + timedelta(minutes=5) df1['interval_string'] = df1['low_time'].astype(str) + df1['high_time'].astype(str)
有人知道如何将这5分钟的间隔绕到最近的5分钟标记处吗?
02:59:37 - 5分钟= 02:55:00
02:59:37 + 5分钟= 03:05:00
interval_string = '02:55:00-03:05:00'
pd.merge(df1, df2, how = 'left', on = ['employee_id', 'session_id', 'date', 'interval_string']
Run Code Online (Sandbox Code Playgroud)
有谁知道如何围绕这样的时间?这似乎可行.您仍然根据日期,员工和会话进行匹配,然后查找基本上在相同的10分钟间隔或范围内的时间
我有两个日期时间列,当我将它们读入内存但实际上在美国/东部时它们是天真的.我只想将这两列转换为US/Central.
我发现了一种有效的方法,但似乎我正在做一个解决方法.我将call_start和call_end列改为名为'start'和'end',因此我最终没有重复的列名.然后,我为每个列创建了一个单独的datetimeindex并重置索引.
aht.set_index(pd.DatetimeIndex(aht['start']).tz_localize('US/Eastern').tz_convert('US/Central'), inplace = True, drop = True)
aht.index.names = ['call_start']
aht = aht.reset_index()
aht.set_index(pd.DatetimeIndex(aht['end']).tz_localize('US/Eastern').tz_convert('US/Central'), inplace = True, drop = True)
aht.index.names = ['call_end']
aht = aht.reset_index()
Run Code Online (Sandbox Code Playgroud)
我最终得到:
call_end call_start start end
2016-01-13 06:05:01-06:00 2016-01-13 06:02:00-06:00 01/13/2016 07:02 01/13/2016 07:05
2016-01-13 06:07:00-06:00 2016-01-13 06:03:16-06:00 01/13/2016 07:03 01/13/2016 07:07
2016-01-13 06:09:13-06:00 2016-01-13 06:06:02-06:00 01/13/2016 07:06 01/13/2016 07:09
2016-01-13 06:17:51-06:00 2016-01-13 06:06:20-06:00 01/13/2016 07:06 01/13/2016 07:17
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?所有其他数据都在中央时间,所以我只是想确保这个文件太合并,当我将文件合并在一起时更有意义.我不关心那里有实际的时区标记 - 有没有办法在我创建新列后轻松剥离它?
有没有办法使用pd.to_feather附加到.feather格式文件?
我也很好奇是否有人知道最大文件大小方面的一些限制,以及在读取.feather文件时是否可以查询某些特定数据(例如读取日期> 2017-03-31的行) ").
我喜欢能够存储我的数据帧和分类数据的想法.
我让网络服务器正常工作,我的airflow-scheduler.service文件启动调度程序,它找到了我的dags等.但是,任务没有运行:
我看到有关/ bin/sh的错误消息
ERROR - failed to execute task Command 'exec bash -c run'
Run Code Online (Sandbox Code Playgroud)
我有我的sysconfig文件:
#!/bin/bash
PATH=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow
AIRFLOW_CONFIG=/mnt/var/airflow/airflow.cfg
AIRFLOW_HOME=/mnt/var/airflow
Run Code Online (Sandbox Code Playgroud)
还有我的airflow-scheduler.service文件:
#!/bin/bash
[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service
Wants=postgresql.service
[Service]
EnvironmentFile=/etc/sysconfig/airflow
User=airflow
Group=airflow
Type=simple
ExecStart=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow scheduler
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
这是记录我得到的bash错误的journalctl记录:
[2017-10-30 18:36:13,764] {base_executor.py:50} INFO - Adding to queue: airflow run user_presence_raw_etl transform_raw_user_presence 2017-10-30T14:00:00 --local -sd /mnt/var/airflow/dags/bin/user_p
Oct 30 18:36:13 airflow[4742]: [2017-10-30 18:36:13,765] {jobs.py:1443} INFO - Heartbeating the executor
Oct 30 18:36:13 airflow[4742]: [2017-10-30 18:36:13,783] {local_executor.py:45} INFO - LocalWorker running airflow …
Run Code Online (Sandbox Code Playgroud) 有没有办法让我的任务需要完成多个仍然能够独立完成的上游任务?
create_dashboard应该需要 load_fcr 和 load_survey 才能成功完成。
我不想强制“调查”任务链中的任何内容要求完成“fcr”任务链中的任何内容。我希望它们并行处理并且即使失败也能完成。但是,仪表板任务需要在开始之前完成加载到数据库。
fcr *-->*-->*
\
---> create_dashboard
/
survey *-->*-->*
Run Code Online (Sandbox Code Playgroud) 我收到一个警告,我想检查一下是否会破坏.我在很多情况下使用这样的np.where(对我来说,类似于excel中的if语句).是否有更好或更多的pythonic或pandas方法来做到这一点?我试图将一个维度变成我可以轻松进行数学运算的东西.
df['closed_item'] = np.where(df['result']=='Action Taken', 1, 0)
FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
result = getattr(x, name)(y)
INSTALLED VERSIONS
------------------
python: 3.5.1.final.0
python-bits: 64
OS: Windows
OS-release: 10
pandas: 0.18.0
nose: 1.3.7
pip: 8.1.0
setuptools: 20.2.2
Cython: 0.23.4
numpy: 1.11.0
scipy: 0.17.0
statsmodels: 0.6.1
xarray: None
IPython: 4.0.0
sphinx: 1.3.1
patsy: 0.4.0
dateutil: 2.4.2
pytz: 2015.7
blosc: None
bottleneck: None
tables: 3.2.2
numexpr: 2.5.1
matplotlib: 1.5.1
openpyxl: 2.2.6
xlrd: 0.9.4
xlwt: …
Run Code Online (Sandbox Code Playgroud)