小编ran*_*.me的帖子

使用pandas.io.sql.read_frame,我可以像在read_csv中那样使用parse_dates吗?

我正在data_frame使用pandas.io.sql.read_frame以下方法直接从数据库中读取:

cnx = pandas.io.sql.connect(host='srv',user='me',password='pw',database='db')
df = pandas.io.sql.read_frame('sql_query',cnx)
Run Code Online (Sandbox Code Playgroud)

它可以很好地检索数据.但是我想解析其中一个列datetime64,类似于从CSV文件读取时可以做的事情,例如:

df2 = pandas.io.read_csv(csv_file, parse_dates=[0])
Run Code Online (Sandbox Code Playgroud)

但是没有parse_dates标志read_frame.建议采用哪种替代方法?

同样的问题适用index_col于read_csv,它指示哪个col.应该是索引.是否有推荐的方法来使用read_frame执行此操作?

python sql datetime pandas

7
推荐指数
1
解决办法
6131
查看次数

为matplotlib 3D绘图标记标签位置

我试图找出如何设置/纠正3D matplotlib图的刻度标签的位置.刻度标签与刻度线不对齐.当需要许多刻度标签时,这个问题似乎特别突出.

我已经从matplotlib文档中修改了一个示例(http://matplotlib.org/examples/mplot3d/polys3d_demo.html)来说明我的问题.

from mpl_toolkits.mplot3d import Axes3D
from matplotlib.collections import PolyCollection
from matplotlib.colors import colorConverter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(10,10))
ax = fig.gca(projection='3d')

cc = lambda arg: colorConverter.to_rgba(arg, alpha=0.6)

xs = np.arange(0, 10, 0.4)
verts = []
zs = np.arange(50)
for z in zs:
    ys = np.ones(len(xs))*z
    ys[0], ys[-1] = 0, 0
    verts.append(list(zip(xs, ys)))

poly = PolyCollection(verts,facecolor='c')
poly.set_alpha(0.7)
ax.add_collection3d(poly, zs=zs, zdir='y')

ax.set_xlabel('X')
ax.set_xlim3d(0, 10)
ax.set_ylabel('Y')
ax.set_ylim3d(-1, len(zs))
ax.set_yticks(np.arange(len(zs)))
labels = {}
for …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

7
推荐指数
2
解决办法
8629
查看次数

在azure ml中运行笔记本时,如何最好地将azure blob csv格式转换为pandas数据帧

我有一些大的csv(制表符分隔)数据存储为azure blob,我想从这些创建一个pandas数据帧.我可以在本地做到如下:

from azure.storage.blob import BlobService
import pandas as pd
import os.path

STORAGEACCOUNTNAME= 'account_name'
STORAGEACCOUNTKEY= "key"
LOCALFILENAME= 'path/to.csv'        
CONTAINERNAME= 'container_name'
BLOBNAME= 'bloby_data/000000_0'

blob_service = BlobService(account_name=STORAGEACCOUNTNAME, account_key=STORAGEACCOUNTKEY)

# Only get a local copy if haven't already got it
if not os.path.isfile(LOCALFILENAME):
    blob_service.get_blob_to_path(CONTAINERNAME,BLOBNAME,LOCALFILENAME)

df_customer = pd.read_csv(LOCALFILENAME, sep='\t')
Run Code Online (Sandbox Code Playgroud)

但是,当在azure ML笔记本上运行笔记本时,我无法"保存本地副本"然后从csv读取,所以我想直接进行转换(类似于pd.read_azure_blob(blob_csv)或只是pd .read_csv(blob_csv)将是理想的).

我可以获得所需的最终结果(blob csv数据的pandas数据帧),如果我首先创建一个azure ML工作区,然后将数据集读入其中,最后使用https://github.com/Azure/Azure-MachineLearning -ClientLibrary-Python以数据集的形式访问数据集,但我更喜欢直接从blob存储位置读取数据集.

python azure azure-storage-blobs pandas azure-machine-learning-studio

7
推荐指数
4
解决办法
6071
查看次数

pandas.to_datetime时间字符串格式不一致

我试图使用.将pandas.DataFrame字符串格式的索引转换为日期时间索引pandas.to_datetime().

进口大熊猫:

In [1]: import pandas as pd

In [2]: pd.__version__
Out[2]: '0.10.1'
Run Code Online (Sandbox Code Playgroud)

创建一个示例DataFrame:

In [3]: d = {'data' : pd.Series([1.,2.], index=['26/12/2012', '10/01/2013'])}

In [4]: df=pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)

看看指数.请注意,日期格式为日/月/年:

In [5]: df.index
Out[5]: Index([26/12/2012, 10/01/2013], dtype=object)
Run Code Online (Sandbox Code Playgroud)

将索引转换为datetime:

In [6]: pd.to_datetime(df.index)
Out[6]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-12-26 00:00:00, 2013-10-01 00:00:00]
Length: 2, Freq: None, Timezone: None
Run Code Online (Sandbox Code Playgroud)

在此阶段,您可以看到每个条目的日期格式的格式不同.第一个很好,第二个月和天交换.

这是我想写的,但避免日期字符串的格式不一致:

In [7]: df.set_index(pd.to_datetime(df.index))
Out[7]: 
data
2012-12-26   1
2013-10-01   2
Run Code Online (Sandbox Code Playgroud)

我想第一个条目是正确的,因为函数'知道'没有26个月,所以不选择默认的月/日/年格式.

还有其他/更好的方法吗?我可以将格式传递给to_datetime()函数吗?

谢谢.

编辑:

我找到了一种方法,没有pandas.to_datetime:

import datetime.datetime as dt
date_string_list = df.index.tolist() …
Run Code Online (Sandbox Code Playgroud)

python datetime pandas

5
推荐指数
1
解决办法
6960
查看次数