Является именем IsFemale, несоответствующий для столбца базы данных?

Сочетая индексное представление и array.prod(axis), это работает в ~ 100 раз быстрее:

def f1():
    #with loop
    new_df = pd.DataFrame()
    for p in combinations_with_replacement(df.columns,2):
            title = p
            new_df[title] = df[p[0]]*df[p[1]]
    return new_df

def f2():
    n = len(df.columns)
    ix = np.indices((n,n))[:, ~np.tri(n, k=-1, dtype=bool)]
    return pd.DataFrame(df.values.T[ix.T].prod(1).T, columns=list(map(tuple, ix.T)))
16
задан Ben Brocka 13 April 2012 в 13:25
поделиться

12 ответов

Вы должны придерживаться стандарта ISO , если это вообще возможно.

ISO / IEC 5218 Информационные технологии. Коды для представления человеческих полов - это международный стандарт, который определяет представление человеческих полов посредством не зависящего от языка однозначного кода. ...

Четырьмя кодами, указанными в ИСО / МЭК 5218, являются:

  • 0 = неизвестно,
  • 1 = мужчина,
  • 2 = женщина,
  • 9 = не применимо.

Стандарт определяет, что на его использование может ссылаться обозначение «SEX».

44
ответ дан 30 November 2019 в 15:04
поделиться

Женщины и мужчины не являются взаимоисключающими, поэтому вам придется придумать что-то для транссексуалов, унисекс и т. Д. .

Чтобы сделать это максимально корпоративным, создайте столбец GenderTypeID :

GenderTypes
-----------
GenderTypeID  Name     Greeting

      1       Male     Dear Sir
      2       Female   Dear Madam
      3       Unisex   Dear Sir and Madam
      4       Unknown  Dear Sir or Madam
      5       Android  Dear Artificial Life Form

... и т. Д.

27
ответ дан 30 November 2019 в 15:04
поделиться

Возможно, имя столбца «пол» (char с «M», «F») сделало бы меня более «чувствительным» .

6
ответ дан 30 November 2019 в 15:04
поделиться

Что ж, типичная вещь - это колонка «секс», но у вас могут оказаться невежественные клиенты, пытающиеся заполнить ее. со значениями «дважды в неделю».

Другая проблема заключается в том, что это зависит от языка. Например, на английском языке M будет означать M an, а на испанском языке это может означать M ujer (женщина).

6
ответ дан 30 November 2019 в 15:04
поделиться

isFemale указывает на большую проблему с вашей схемой, нечто подобное должно быть обобщено или, возможно, даже нормализовано:

Например, наличие на вашем столе колонки секса, которая является FK для таблицы секса:

---------------------
| ID   | Type       |
|-------------------|
|   1  | Male       |
|   2  | Female     |
|   3  | Yes Please |
---------------------

Заметьте, на самом деле не делайте этого, это глупо, если вы не планируете поддерживать необычные полы. Я все еще думаю, что общий столбец лучше, чем бит isFemale.

3
ответ дан 30 November 2019 в 15:04
поделиться

Ясно, что спрашивающий обеспокоен ( справедливо) о том, что разработчик базы данных не принял во внимание нейтральный по отношению к ценностям язык.

(Обратите внимание, что политически корректный (справедливо) больше не считается принятым, нейтральным по отношению к ценностям языком.)

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

Хотя разработчик мог наивно полагать, что IsFemale даст женщинам 1 и, следовательно, более высокое / превосходное значение, истинным значениям часто присваивается значение -1. Не говоря уже о культурах, где 0 - священная ценность.

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

2
ответ дан 30 November 2019 в 15:04
поделиться

Вам когда-нибудь придется проверять «IsFemale» true / false?

колонка типа "PersonType" или что-то подобное подойдет? Таким образом, у вас может быть «женщина», «мужчина», «компания» и т. Д. - больше возможных значений.

Марк

PS: но если вы решите использовать «битовый» (логический) столбец, то Префикс «Is» или «Has», на мой взгляд, является хорошим выбором - дает понять, что это логическое значение!

1
ответ дан 30 November 2019 в 15:04
поделиться

Что не так с классическим "полом" и вспомогательными подтипами, такими как M, F и т. Д ...

1
ответ дан 30 November 2019 в 15:04
поделиться

В каждой базе данных, с которой я когда-либо работал, использовалось имя столбца Gender со значениями 0 для женщин и 1 для мужчин , Я всегда предполагал, что эти значения были назначены во многом таким же образом, что электронное оборудование имеет разъемы, которые описываются как женские или мужские.

Вопрос о том, смехотворен ли IsFemale, зависит от намерений системы, однако, похоже, это действительно так. нарисовал приложение в угол. Например, половые поля могут быть увеличены, чтобы вместить дополнительный «тип», но IsFemale, очевидно, всегда будет истинным или ложным и, следовательно, вовсе не расширяемым.

1
ответ дан 30 November 2019 в 15:04
поделиться

Пол кажется лучшим выбором, но если вы хотите или должны использовать логический столбец, есть только два варианта - IsMale или IsFemale.

0
ответ дан 30 November 2019 в 15:04
поделиться

Если вы спрашиваете, смехотворно, это зависит. Будет ли Мейл лучше, шовинист? (Шучу!)

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

Там действительно нет ' Причина, по которой мужчина должен быть истинным, а женщина должна быть ложным, и, возможно, ваша база данных менее эффективна в использовании сравнения символов и символов.

С точки зрения программирования, избегать логических выражений в таблицах имеет смысл по тем же причинам, по которым целесообразно избегать логических выражений в параметрах функций.

0
ответ дан 30 November 2019 в 15:04
поделиться

Для простых систем, где нет сексуальной неопределенности, я использую IsMale. Альтернативой может быть использование таблицы поиска, если ваши требования включают людей с интерсексами. Если у вас есть только мужчины и женщины, использование чего-либо, кроме логического значения, вносит ненужную сложность и двусмысленность в систему.

0
ответ дан 30 November 2019 в 15:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: