Python pd.read_csv, .to_sql отличается от реальных данных - PullRequest
0 голосов
/ 11 мая 2018

У меня есть база данных с ~ 50 миллионами строк. После чтения в базу данных я получаю только 21 000 строк. Что я делаю неправильно? Спасибо.

chunksize = 100000
csv_database = create_engine('sqlite:///csv_database.db', pool_pre_ping=True)



i=0
j=0
q=0
for df in pd.read_csv(filename, chunksize = chunksize, iterator = False):
#    df = df.rename(columns={c: c.replace(' ', '') for c in df.columns})
    df.index += j
    i+= 1
    df.to_sql('table', csv_database, if_exists='append')
    j = df.index[-1] +1
    q+=1
    print("q: " + repr(q))




columnx = df.iloc[:,0]
columny = df.iloc[:,1]
columnz = df.iloc[:,2]
columnmass = df.iloc[:,3]

out: [21739 rows x 1 columns] etc etc.

in[19]: len(df)
Out[19]: 21739

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Следующий код работает для меня.

import numpy as np
import pandas as pd
import sqlite3
from sqlalchemy import create_engine

DIR = 'C:/Users/aslams/Desktop/checkpoint/'
FILE = 'SUBSCRIBER1.csv'

file = '{}{}'.format(DIR, FILE)

csv_database = create_engine('sqlite:///csv_database.db')

chunksize = 10000
i = 0
j = 0

for df in pd.read_csv(file, chunksize=chunksize, iterator=True):
    df = df.rename(columns= {c: c.replace(' ', '') for c in df.columns})
    df.index +=3

    df.to_sql('data_use', csv_database, if_exists = 'append')
    j = df.index[-1]+1

    print('| index: {}',format(j))
0 голосов
/ 30 мая 2018

'df' не содержит весь CSV-файл, так как вы указали размер фрагмента для 100000, а 21739 - это количество строк, вставленных в последнюю итерацию.

Если вы выполните подсчет (1) изБьюсь об заклад, вы получите что-то вроде 5_21739.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...