Статья Хелен Андерсона «Серия 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 | Катистота | ||
дарвеш | дел | Дарвеш |
Забрать
Уроки, которые я надеюсь, вы заберете из этого поста блога:
- Некоторые задачи модификации электронных таблиц действительно не намного сложнее для кода в Python, чем они в Excel, как только вы с ними знакомы. И теперь вы знаете один! ( Добавление новой копии для заголовков колонна.)
- Выберите нужный инструмент для работы. Существуют не только накладные расходы на кодирование с 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”