Рубрики
Без рубрики

Правильно обсадные данные Excel с Python

«Мысли из моей первой попытки подражать коду Excel Excel Helen anderson в Python». Теги с Python, Excel, начинающими, учебниками.

Статья Хелен Андерсона «Серия Excel: Формулы и функции» сегодня пошли в Твиттере, и ее первые шаги были настолько красиво просты, я подумал: «Эй, давайте посмотрим, как они выглядят в Python, для небольшого сравнения, контрастности».

Мне нужно вернуться на работу, поэтому я только получил только ее первый пример, = Правильный (A1) , но только было довольно интересно.

Пример данных

Во-первых, я настроил очень маленький стол для работы и сохранил его в переменной, я решил позвонить дф. :

ануш яблоко
Бенита Boiron.
катистота CVS
дарвеш дел

В моем случае код Python для этого был следующим, потому что я включил данные образца в составе кода:

from collections import OrderedDict
import pandas

initdata = OrderedDict([('fname', ['anush','benita','cathy','darweesh']),
          ('company', ['apple','boiron','cvs','dell']) ])
df = pandas.DataFrame(initdata)

Но обычно это выглядит так, если мои данные были внутри электронной таблицы, называемой образец .xlsx :

import pandas
df = pandas.read_excel('sample.xlsx')

Отображается в моей консоли с Печать (DF) (После первой включенной линейки кода pandas.set_option ('expart_frame_repr', false) Чтобы претеннуть на вывод) Похоже, это выглядит так:

      fname company
0     anush   apple
1    benita  boiron
2     cathy     cvs
3  darweesh    dell

Собственный корпус всех «быстрее» в Python, чем в Excel

Модуль Pandas Python («Модуль» набор команд) Сообщается с использованием минимального кода для повторения той же процедуры для всего набора данных, таких как столбец, сразу.

Следовательно, в то время как Хелен = Правильный (A1) Формула Excel просто заполнила какую-либо единую ячейку, в которую вы перекладываете его в копию «Cound Cound» содержимого ячейки «A1», Команды Pandas простые, когда вы добавляете совершенно новый столбец к вашей электронной таблице с каждый Имя называется заголовок, весь путь вниз.

Обратите внимание, что в пандах вы обычно называетесь столбцами по их именам, а не буквами алфавита, указывающего на то, что они приходят.

Этот код Python:

df['fname_proper'] = df['fname'].str.title()
print(df)

Изменяет содержимое таблицы, хранящегося в переменной DF И отображает этот выход:

      fname company fname_proper
0     anush   apple        Anush
1    benita  boiron       Benita
2     cathy     cvs        Cathy
3  darweesh    dell     Darweesh

Каковы эти данные:

ануш яблоко Ануш
Бенита Boiron. Бенита
катистота CVS Катистота
дарвеш дел Дарвеш

Слово на “Скорость”

Я положил «быстрее» в кавычках в этом разделе заголовок, потому что он спотер, пишет целую программу Python, чтобы добавить 1 столбец к электронной таблице, действительно «быстрее», чем ввод формулы в Excel в дополнительном пробере и копировании формулы до конца страницы.

Нет, вы знаете, что? Это на самом деле не спорятимо.

В реальном мире это будет нарезать хлеб с бензопилой.

То, что я подразумеваю под «быстрее», является то, что команды модуля Python PandaS предназначены для облегчения мышления в больших наборах данных, тогда как когда вы думаете о том, как использовать команды Excel, вы работаете больше «одной ячейки за раз».

Примечание: где вещи сделать Начните легительно быстрее в Python с повторением или сложностью. Примеры:

  • У вас есть 300-контактная таблица столбца, 100 из которых имеют слово «имя» в заголовке столбца. Вам необходимо создать копию каждого столбца, которая имеет слово «name» в своем заголовке и заголовке-корпусе содержимого копии. Вы собираетесь сэкономить много времени, кодируя это, а не делать это вручную. И Python, который я только что показал, что вы были бы частью этого кода.
  • Вы уже обрабатывали свою электронную таблицу с помощью Python, потому что вы делали какой-либо другой вид сложной операции (как многопользователь vlookup между таблицами) Отказ Почему бы не бросить еще одну операцию в свою программу Python, а не оставить себе работу, чтобы сделать вручную в Excel после того, как Python заканчивает «сложную» работу? Я часто нахожу это так, когда, скажем, объединяя данные «Люди» данные с «кампанией», чтобы создать файл «Campaignbember» для вставки в Salesforce.

Только добавление “Anush”

Но, возможно, я немного давно предполагаю, что Хелен, когда-либо намеревался «скопировать» = Правильный (A1) к названию – больше строк.

Возможно, она действительно просто хотела сделать копию для заголовков одной ячейки.

Давайте посмотрим на два очень подобных подхода к этому в Python.

Различия между ними незначительны для новичка – просто немного разные способы набрать «правую сторону» из = Команда в зависимости от того, как вы вводите «левую сторону» из-за понятия под названием « типы данных ».

Какие два подхода имеют общее, это то, что они оба сложны.

(Команды Python «Pandas» не оптимизированы для удобной печати, когда речь идет о выполнении таких операций с одним ячем. Это считается исключением, а не норма, за то, что большинство людей хотят сделать.)

Кроме того, они оба относятся к тому, что было в примере Хелен, «ряд 1 », как ряд ” 0 .”

Подход 1

Этот код Python:

df.loc[0,'fname_1st_row_only_proper_v1'] = df.loc[0,'fname'].title()
print(df)

Изменяет содержимое таблицы, хранящегося в переменной дф. (Что, помните, теперь также есть Fname_Proper Столбец) И отображает этот выход:

      fname company fname_proper fname_1st_row_only_proper_v1
0     anush   apple        Anush                        Anush
1    benita  boiron       Benita                          NaN
2     cathy     cvs        Cathy                          NaN
3  darweesh    dell     Darweesh                          NaN

Каковы эти данные:

ануш яблоко Ануш Ануш
Бенита Boiron. Бенита
катистота CVS Катистота
дарвеш дел Дарвеш

Подход 2

Этот код Python:

df.loc[[0],'fname_1st_row_only_proper_v2'] = df['fname'].str.title()
print(df)

Изменяет содержимое таблицы, хранящегося в переменной дф. (который, помните, уже есть 4 столбца, прежде чем запустить команду) И отображает этот выход:

      fname company fname_proper fname_1st_row_only_proper_v1 fname_1st_row_only_proper_v2
0     anush   apple        Anush                        Anush                        Anush
1    benita  boiron       Benita                          NaN                          NaN
2     cathy     cvs        Cathy                          NaN                          NaN
3  darweesh    dell     Darweesh                          NaN                          NaN

Каковы эти данные:

ануш яблоко Ануш Ануш Ануш
Бенита Boiron. Бенита
катистота CVS Катистота
дарвеш дел Дарвеш

Забрать

Уроки, которые я надеюсь, вы заберете из этого поста блога:

  1. Некоторые задачи модификации электронных таблиц действительно не намного сложнее для кода в Python, чем они в Excel, как только вы с ними знакомы. И теперь вы знаете один! ( Добавление новой копии для заголовков колонна.)
  2. Выберите нужный инструмент для работы. Существуют не только накладные расходы на кодирование с Python против щелчковки на ячейках в Excel и редактирование их формул, но Некоторые команды проще, чем другие в Python, Как и в Excel Отказ

Полный код

Вот полный скрипт, который вы можете скопировать и вставить в reft.it редактор бежать для себя:

from collections import OrderedDict
import pandas
pandas.set_option('expand_frame_repr', False)

def p(x):
    print(x)
    print('---DIVIDER---')

initdata = OrderedDict([('fname', ['anush','benita','cathy','darweesh']),
          ('company', ['apple','boiron','cvs','dell']) ])
df = pandas.DataFrame(initdata)
p(df)

# "=PROPER(A1)" imitation #1 of 3 (entire "fname" column)
df['fname_proper'] = df['fname'].str.title()
p(df)

# "=PROPER(A1)" imitation #2 of 3 (single cell approach #1 of 2)
df.loc[0,'fname_1st_row_only_proper_v1'] = df.loc[0,'fname'].title()
p(df)

# "=PROPER(A1)" imitation #3 of 3 (single cell approach #2 of 2)
df.loc[[0],'fname_1st_row_only_proper_v2'] = df['fname'].str.title()
p(df)

И его полный вывод:

      fname company
0     anush   apple
1    benita  boiron
2     cathy     cvs
3  darweesh    dell
---DIVIDER---
      fname company fname_proper
0     anush   apple        Anush
1    benita  boiron       Benita
2     cathy     cvs        Cathy
3  darweesh    dell     Darweesh
---DIVIDER---
      fname company fname_proper fname_1st_row_only_proper_v1
0     anush   apple        Anush                        Anush
1    benita  boiron       Benita                          NaN
2     cathy     cvs        Cathy                          NaN
3  darweesh    dell     Darweesh                          NaN
---DIVIDER---
      fname company fname_proper fname_1st_row_only_proper_v1 fname_1st_row_only_proper_v2
0     anush   apple        Anush                        Anush                        Anush
1    benita  boiron       Benita                          NaN                          NaN
2     cathy     cvs        Cathy                          NaN                          NaN
3  darweesh    dell     Darweesh                          NaN                          NaN
---DIVIDER---

Оригинал: “https://dev.to/katiekodes/proper-casing-excel-data-with-python-2p0n”