DrugDesign Data Analysis
https://gitlab.com/UmbrellaLeaf5/drugdesign_parsing
Loading...
Searching...
No Matches
list_and_dataframe_funcs Namespace Reference

Functions

list DedupedList (list l)
 
pd.DataFrame MedianDedupedDF (pd.DataFrame df, str id_column_name, str median_column_name)
 
list NonNoneList (list l)
 

Function Documentation

◆ DedupedList()

list list_and_dataframe_funcs.DedupedList ( list l)
Убирает все дубликаты и None из списка

Args:
    l (list): исходный список

Returns:
    list: список без None и дубликатов
24def DedupedList(l: list) -> list:
25 """
26 Убирает все дубликаты и None из списка
27
28 Args:
29 l (list): исходный список
30
31 Returns:
32 list: список без None и дубликатов
33 """
34
35 try:
36 return list(set(NonNoneList(l)))
37
38 except:
39 # https://stackoverflow.com/questions/9427163/remove-duplicate-dict-in-list-in-python
40 return list({frozenset(item.items()): item for item in NonNoneList(l)}.values())
41
42
Here is the call graph for this function:
Here is the caller graph for this function:

◆ MedianDedupedDF()

pd.DataFrame list_and_dataframe_funcs.MedianDedupedDF ( pd.DataFrame df,
str id_column_name,
str median_column_name )
Удаляет дубликаты в колонке идентификаторов элементов DataFrame,
заменяя их медианой соответствующих значений в колонке median_column_name.
Сохраняет значения из всех остальных столбцов в списки, если они различны, иначе - одиночными элементами.

Args:
    df (pd.DataFrame): исходный DataFrame
    id_column_name (str): имя колонки, в которой находятся идентификаторы
    median_column_name (str): имя колонки, в которой надо посчитать медианы

Returns:
    pd.DataFrame: с удаленными дубликатами и списками в остальных столбцах.
43def MedianDedupedDF(df: pd.DataFrame, id_column_name: str, median_column_name: str) -> pd.DataFrame:
44 """
45 Удаляет дубликаты в колонке идентификаторов элементов DataFrame,
46 заменяя их медианой соответствующих значений в колонке median_column_name.
47 Сохраняет значения из всех остальных столбцов в списки, если они различны, иначе - одиночными элементами.
48
49 Args:
50 df (pd.DataFrame): исходный DataFrame
51 id_column_name (str): имя колонки, в которой находятся идентификаторы
52 median_column_name (str): имя колонки, в которой надо посчитать медианы
53
54 Returns:
55 pd.DataFrame: с удаленными дубликатами и списками в остальных столбцах.
56 """
57
58 median_and_id_data: dict = {}
59
60 # значения в столбце, где будут медианы - должно быть типа float
61 df[median_column_name] = df[median_column_name].astype(float)
62
63 for name in df[id_column_name].unique():
64 name_subset_df: pd.DataFrame = df.loc[df[id_column_name] == name]
65 # создаем словарь для хранения данных по данному имени
66 name_values_dict = {
67 median_column_name: name_subset_df[median_column_name].median()}
68
69 # добавляем списки значений для остальных столбцов
70 for col in name_subset_df.columns:
71 # исключаем колонку median_column_name
72 if col != median_column_name and col != id_column_name:
73 try:
74 name_values_dict[col] = DedupedList(
75 name_subset_df[col].tolist())
76
77 except TypeError:
78 name_values_dict[col] = NonNoneList(
79 name_subset_df[col].tolist())
80
81 # если в списке 1 элемент, то список бесполезен
82 if len(name_values_dict[col]) == 1:
83 name_values_dict[col] = name_values_dict[col][0]
84
85 def IsAllNan(l: list):
86 return all(str(elem) == "nan" for elem in l)
87
88 # если в списке нет элементов, или они все == "nan", то это не список
89 if (isinstance(name_values_dict[col], list)):
90 if len(name_values_dict[col]) == 0 or IsAllNan(name_values_dict[col]):
91 name_values_dict[col] = None
92
93 # сохраняем данные для данного имени
94 median_and_id_data[name] = name_values_dict
95
96 # новый pd.DataFrame с уникальными значениями id_column_name и соответствующими данными
97 new_df = pd.DataFrame.from_dict(
98 median_and_id_data, orient='index').reset_index()
99 new_df.rename(columns={'index': id_column_name}, inplace=True)
100
101 return new_df
Here is the call graph for this function:

◆ NonNoneList()

list list_and_dataframe_funcs.NonNoneList ( list l)
Убирает все None из списка

Args:
    l (list): исходный список

Returns:
    list: список без None
10def NonNoneList(l: list) -> list:
11 """
12 Убирает все None из списка
13
14 Args:
15 l (list): исходный список
16
17 Returns:
18 list: список без None
19 """
20
21 return list(filter(None, l))
22
23
Here is the caller graph for this function: