Некоторые операции, такие как df.merge, не сохраняют порядок столбцов в результирующем фрейме данных, или иногда мы хотим применить различные операции к фрейму данных, который в конечном итоге преобразуется в новый фрейм данных с дополнительным столбцом или изменением типов данных некоторых столбцов. И если мы хотим загрузить данные фрейма данных в таблицу SQL, одна из проблем, с которыми мы сталкиваемся при этом, заключается в создании соответствующей таблицы в вашей базе данных для загрузки данных.
Здесь я представляю небольшой пример того, как создать таблицу с именем столбца, таким же, как столбцы фрейма данных, и как выбрать соответствующие типы данных для столбцов.
Допустим, у нас есть данные об инвесторах и их инвестициях в двух отдельных CSV-файлах, и мы хотим объединить оба CSV-файла и загрузить полученные данные в базу данных. Фиктивные данные, сгенерированные с mockaroo.com
Шаг 1. Считайте CSV-файлы во фреймы данных.
import pandas as pd investorDF = pd.read_csv('investor.csv') investmentDF = pd.read_csv('investment.csv')
Шаг 2. Выполните операцию слияния/объединения или любые другие вычисления с кадрами данных.
resultDF = investorDF.merge(investmentDF)
Шаг 3. Соберите имена столбцов в список Python.
columnName = list(resultDF.columns.values)
Шаг 4. Выбор типов данных для таблицы SQL немного сложен. Поскольку типы данных pandas data-frame и СУБД совершенно разные. Для сбора типов данных в список мы можем написать небольшой фрагмент кода, например
def getColumnDtypes(dataTypes): dataList = [] for x in dataTypes: if(x == 'int64'): dataList.append('int') elif (x == 'float64'): dataList.append('float') elif (x == 'bool'): dataList.append('boolean') else: dataList.append('varchar') return dataList columnDataType = getColumnDtypes(resultDF.dtypes)
Шаг 5. Теперь у нас есть списки всех имен столбцов и типов данных столбцов. Нам нужно снова написать небольшой фрагмент кода, чтобы завершить оператор создания таблицы.
createTableStatement = 'CREATE TABLE IF NOT EXISTS investordetails (' for i in range(len(columnDataType)): createTableStatement = createTableStatement + '\n' + columnName[i] + ' ' + columnDataType[i] + ',' createTableStatement = createTableStatement[:-1] + ' );'
Шаг 5 даст нам необходимый оператор создания таблицы.
Шаг 6: Теперь мы можем использовать библиотеку Python, такую как psycopg2 или любую другую в соответствии с нашей системой базы данных, для выполнения оператора для создания таблицы.
import psycopg2 conn = psycopg2.connect(dbname='testdb', host='abc.xyz.com', port='xxxx', user='mydbuser', password='xxxxxxxx') cur = conn.cursor() cur.execute(createTableStatement) conn.commit()
Выполнив все вышеперечисленные шаги, вы сможете создать таблицу в базе данных для загрузки данных из фрейма данных Pandas.
Спасибо, что прочитали эту статью. Я надеюсь, что вы найдете это полезным.
Вы также можете найти полный код здесь.