我正在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执行此操作?
我试图找出如何设置/纠正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) 我有一些大的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
我试图使用.将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 ×4
pandas ×3
datetime ×2
azure ×1
azure-machine-learning-studio ×1
matplotlib ×1
sql ×1