Milisaniye cinsinden olan bir veriyi tarih ve zamana nasıl ayırabilirim?

Merhaba Binance api üzerinden çektiğim zaman verisi ile ilgili bir sorum olacak

veriyi çektiğimde görmüş olduğunuz gibi “0” numaralı sütundaki değerler mili saniye olarak geliyor bu veriyi (%Y%m%d) ve (%H%M) olarak iki ayrı sütuna ayırmak istiyorum bunu nasıl yapabilirim

şuanda çekmiş olduğum veri dakikalık veriler bunları okunabilir tarih ve saat formatına getirmek ve sütunları tarih yani (yıl:ay:gün) olmak üzere bi sütun, (saat:dakika) olmak üzere bir sutun olarak bölüp ikiye ayırmak için ne yapmam lazım

Merhaba, print(df.head().to_dict())'in çıktısını paylaşırsanız biz de veriye erişebilir ve yöntemlerimizin çalışıp çalışmadığını kontrol edebiliriz. Resimden tek tek yazmak siz de takdir edersiniz ki biraz zor olur.

df sizin dataframe’iniz oluyor ve çıktıyı paylaşmak için şuraya veya şuraya göz atabilirsiniz.

             0            1            2            3            4   \

0 1640390400000 34.87000000 34.87000000 34.87000000 34.87000000
1 1640390460000 34.92000000 34.92000000 34.92000000 34.92000000
2 1640390520000 34.86000000 34.86000000 34.71000000 34.72000000
3 1640390580000 34.73000000 34.73000000 34.73000000 34.73000000
4 1640390640000 34.79000000 34.79000000 34.79000000 34.79000000
… … … … … …
4316 1640649360000 39.60000000 39.63000000 39.59000000 39.63000000
4317 1640649420000 39.60000000 39.64000000 39.60000000 39.64000000
4318 1640649480000 39.64000000 39.64000000 39.54000000 39.57000000
4319 1640649540000 39.59000000 39.59000000 39.55000000 39.57000000
4320 1640649600000 39.53000000 39.56000000 39.50000000 39.50000000

yeterli midir ve hızlı yanıt verdiğiniz için teşekkürler

Pek değil maalesef, print(df.head().to_dict())'in çıktısını şuraya göz atarak paylaşabilir misiniz? Belki sonraki gönderilerinizde de (olursa) işe yarar.

from binance.client import Client

import matplotlib.pyplot as plt

import pandas as pd

import numpy as np

import datetime

from pandas import DataFrame as df

import time

Pkey=

Skey=

client = Client(api_key=Pkey, api_secret=Skey) #client için gerekli keylerin atanması

klines = client.get_historical_klines(“TRBUSDT”, Client.KLINE_INTERVAL_1MINUTE,“25 Dec, 2021”,“28 Dec, 2021”) #binance api üzerinden getirilecek verinin sıklığı ve tarih aralığı

candles=df(klines) #verinin daraframe ile tablo haline getirilmesi

toplamSatir=int(len(candles[1])) #toplam kaç satırdan oluşan bir veriye sahibiz bulunması

i=0

saat=pd.date_range(“00:00”, “23:59”, freq=“1min”).strftime(’%H:%M’)

dataokuma=np.zeros((toplamSatir))

indexzaman=np.arange(0,len(saat))

zamandata=pd.DataFrame({‘indess’:indexzaman,‘seri’:saat})

while(i<=(toplamSatir-1)):

okunabilirTarih = datetime.datetime.fromtimestamp(candles[0][i] / 1000) #getirilen verinin zaman fonksyonun işlenmesi ve tarihi okunabilir hale getirilmesi

okunabilirTarih2=datetime.datetime.strftime(okunabilirTarih,’%H:%M’)

okunabilirTarih3=datetime.datetime.strftime(okunabilirTarih,’%d’)

zamankey = zamandata.index[zamandata[‘seri’] == okunabilirTarih2].tolist()

i = i + 1

candles[0]=pd.to_datetime(candles[0], format=’%Y%m%d’)

print(candles)

candles dışında kalan alt kısmındaki herşeyi görmezden gelebilirsiniz

Pek olmadı ama olsun :d

Verinizin birimi milisaniye olduğu için pd.to_datetime'a paslarken unit="ms" diyerek bunu belirtebiliriz:

>>> pd.to_datetime(df[0], unit="ms")

0   2021-12-25 00:00:00
1   2021-12-25 00:01:00
2   2021-12-25 00:02:00
3   2021-12-25 00:03:00
4   2021-12-25 00:04:00
Name: 0, dtype: datetime64[ns]

Gördüğünüz gibi tarihe ve zamana çevirmeyi yaptı. Şimdi bunu bir değişkene atayıp istediğiniz iki formata çevirebilirsiniz .dt.strftime kullanarak:

>>> tarih_zaman = pd.to_datetime(df[0], unit="ms")
>>> tarih_zaman.dt.strftime("%Y%m%d")
0    20211225
1    20211225
2    20211225
3    20211225
4    20211225

.dt “datetime accesor” olarak geçiyor; tarih-zaman verisi üzerindeki metotların kamplandığı yer olarak düşünebiliriz, önce oraya “access” ediyoruz sonra metotlara (örneğin strftime). strftime da “string’i timea formatla” gibi düşünülebilir, içerisine de istediğimiz formatı veriyoruz onu zaten biliyorsunuz.

2 Beğeni

teşekkür ederim çok sağolun

1 Beğeni