Сортировка списков в python

Сбор данных

Наука о данных включает в себя обработку данных, чтобы данные могли хорошо работать с алгоритмами данных. Data Wrangling – это процесс обработки данных, такой как слияние, группировка и конкатенация.

Библиотека Pandas предоставляет полезные функции, такие как merge(), groupby() и concat() для поддержки задач Data Wrangling.

import pandas as pd

d = {  
    'Employee_id': ,
    'Employee_name': 
}
df1 = pd.DataFrame(d, columns=)  
print(df1)

import pandas as pd

data = {  
    'Employee_id': ,
    'Employee_name': 
}
df2 = pd.DataFrame(data, columns=)  
print(df2)

а. merge()

print(pd.merge(df1, df2, on='Employee_id'))

Мы видим, что функция merge() возвращает строки из обоих DataFrames, имеющих то же значение столбца, которое использовалось при слиянии.

b. Группировка

import pandas as pd
import numpy as np

data = {
    'Employee_id': ,
    'Employee_name': 
}
df2 = pd.DataFrame(data)

group = df2.groupby('Employee_name')
print(group.get_group('Meera'))

Поле «Employee_name» со значением «Meera» сгруппировано по столбцу «Employee_name». Пример вывода приведен ниже:

Python 2.7 (функциональная реализация)

def merge(right, left, result):
    result.append((left if left < right else right).pop(0))
    return merge(right=right, left=left, result=result) if left and right else result+left+right
 
merge_sort = (lambda arr: arr if len(arr) == 1 else merge(merge_sort(arr[len(arr)/2:]),
                                                          merge_sort(arr[:len(arr)/2]), []))

 Недостатком сортировки слиянием является использование дополнительной памяти. Но когда работать приходиться с файлами или списками, доступ к которым осуществляется только последовательно, то очень удобно применять именно этот метод. Также, к достоинствам алгоритма стоит отнести его устойчивость и неплохую скорость работы O(n*logn).

При написании статьи были использованы открытые источники сети интернет :

Youtube 

Скорость сортировки в Python

Python

# speed/main.py

import random

from boxx import timeit

def list_sort(arr):
return arr.sort()

def sorted_builtin(arr):
return sorted(arr)

def main():
arr =

with timeit(name=»sorted(list)»):
sorted_builtin(arr)

with timeit(name=»list.sort()»):
list_sort(arr)

if __name__ == «__main__»:
main()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# speed/main.py
 

importrandom

fromboxx importtimeit

deflist_sort(arr)

returnarr.sort()

defsorted_builtin(arr)

returnsorted(arr)

defmain()

arr=random.randint(,50)forrinrange(1_000_000)

withtimeit(name=»sorted(list)»)

sorted_builtin(arr)

withtimeit(name=»list.sort()»)

list_sort(arr)

if__name__==»__main__»

main()

Указанный выше код выводит следующий результат:

Shell

$ python main.py
«sorted(list)» spend time: 0.1104379
«list.sort()» spend time: 0.0956471

1
2
3

$python main.py

«sorted(list)»spend time0.1104379

«list.sort()»spend time0.0956471

Как видите, метод немного быстрее, чем функция . Почему так получается? Разберем обе функции и посмотрим, сможет ли байтовый код дать ответ:

Python

>>> import dis
>>> dis.dis(list_sort)
12 0 LOAD_FAST 0 (arr)
2 LOAD_METHOD 0 (sort)
4 CALL_METHOD 0
6 RETURN_VALUE
>>> dis.dis(sorted_builtin)
16 0 LOAD_GLOBAL 0 (sorted)
2 LOAD_FAST 0 (arr)
4 CALL_FUNCTION 1
6 RETURN_VALUE

1
2
3
4
5
6
7
8
9
10
11

>>>importdis

>>>dis.dis(list_sort)

12LOAD_FAST(arr)

2LOAD_METHOD(sort)

4CALL_METHOD

6RETURN_VALUE

>>>dis.dis(sorted_builtin)

16LOAD_GLOBAL(sorted)

2LOAD_FAST(arr)

4CALL_FUNCTION1

6RETURN_VALUE

Байтовый код обеих функций практически идентичен. Единственное различие в том, что функция сначала загружает список, и за методом (sort) следует вызванный метод списка без аргументов. Если сравнить, функция сначала загружает встроенную функцию , а за ней следует список и вызов загруженной функции со списком в качестве аргумента.

Почему же временные результаты отличаются?

Можно предположить, что в то время как может работать с известным размером и менять элементы внутри данного размера, должен работать c неизвестным размером. Следовательно, если при добавлении нового элемента не хватает памяти, нужно изменить размер нового списка, созданного через . На это требуется время! Если просмотреть исходный код CPython, можно найти следующий комментарий об изменении размера списка объектов:

Помните, что сейчас мы работаем со списком из 1 000 000 элементов — изменений размера будет довольно много! К несчастью, пока что это лучший ответ на вопрос, почему на 13% быстрее, чем .

Python

new_array = arr.copy()
arr.sort()

1
2

new_array=arr.copy()

arr.sort()

Имплементация приводит к разнице во времени выполнения, поскольку создание копии списка занимает некоторое время.

Что такое Группировка?

Группировка базы данных/фрейма данных является обычной практикой в повседневном анализе и очистке данных. Группировка означает объединение идентичных данных (или данных, имеющих одинаковые свойства) в разные группы.

Например : Представьте себе школьную базу данных, в которой есть ученики всех классов. Теперь, если директор хочет сравнить результаты/посещаемость между классами, ему нужно сравнить средние данные по каждому классу. Но как он может это сделать? Он группирует данные учащихся в зависимости от того, к какому классу они принадлежат (учащиеся одного класса входят в одну группу), а затем усредняет данные по каждому учащемуся в группе.

Наш пример охватывает очень идеальную ситуацию, но это самое основное применение группировки. Группировка может основываться на нескольких свойствах. Это иногда называют иерархической группировкой, когда группа далее подразделяется на более мелкие группы на основе какого-либо другого свойства данных. Это позволяет нашим запросам быть настолько сложными, насколько нам требуется.

Существует также очень простая проблема, которую мы проигнорировали в нашем примере: все данные в базе данных не нужно усреднять. Например, если нам нужно сравнить только среднюю посещаемость и процент каждого класса, мы можем игнорировать другие значения, такие как номер мобильного телефона или номер рулона, среднее значение которых действительно не имеет смысла. В этой статье мы узнаем, как создавать такие сложные команды группировки в панд.

Как вставить данные в DataFrame

Когда у нас уже создан DataFrame со своими столбцами, нам остается только добавить в него данные. Существует несколько способов сделать это. Давайте посмотрим на некоторые из них.

Предположим, что у нас есть данные, которые нужно вставить в списки, то есть список для каждого столбца со значениями каждой строки для этого столбца. Мы можем сделать простое отображение следующим образом:

Результат этой операции будет следующим:

Будьте осторожны! Если вы присваиваете значения DataFrame таким образом, все списки должны иметь одинаковую длину.

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

Когда у нас есть некоторые значения, мы можем добавить новые значения, вставляя полные строки. Это полезно, как я уже говорил, чтобы иметь возможность вставлять значения постепенно, по мере их получения или генерации. Для этого можно воспользоваться функцией append объектов DataFrame, которая добавляет строку в конец таблицы.

Вы можете предоставить этой функции объект типа Series of pandas, который представляет собой список значений, или объект типа dictionary, где каждое значение соответствует имени столбца в таблице в качестве ключа. Рассмотрим оба способа на одном примере:

Обратите внимание на несколько моментов:

  • Функция append возвращает новый объект с новыми значениями, поэтому мы должны выполнить присваивание df = df.append(…).
  • Мы должны указать параметр ignore_index, установленный в False в функции append, чтобы она не учитывала индексы новых данных, которые могли бы быть указаны (хотя в данном случае они этого не делают). Помните, что мы можем добавить данные из другого DataFrame, у которого есть индексы.
  • При создании объекта Series, помимо новых данных, необходимо указать столбцы (в том же порядке, что и данные). Для этого я использую параметр index и атрибут columns фрейма DataFrame, чтобы не писать их вручную.

Результатом приведенного выше кода является:

Вы можете добавить сразу несколько строк, предоставив функции append список словарей или Series, по одному на строку. Это будет более эффективно, чем несколько вызовов функции, по одному вызову на строку.

Подобно столбцам, строки тоже могут иметь имя. Каждый ряд может иметь собственное название или метку. Вы можете представить себе еженедельный календарь, в котором каждая строка представляет собой день недели. Таким образом, мы можем обозначить каждый ряд названиями “понедельник”, “вторник”, “среда” и так далее.

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

Другим способом добавления данных является использование атрибута loc фрейма DataFrame. loc позволяет получить доступ к определенной строке (или нескольким строкам) через ее имя.

Рассмотрим пример:

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

Обратите внимание, что во вторник во второй половине дня лекарств нет. В этом случае я могу указать значение None

Это имена меток или строк, являющиеся набором индексов, которые print(df) намеревался вывести на экран, когда DataFrame был пуст.

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

Теперь, когда мы увидели, как создать пустой и как создать еще один из значений столбцов, давайте рассмотрим другие способы

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

Сортировка List в языке C#

Для того, чтобы произвести сортировку списка List, элементами которого являются ссылочные типы данных, сначала необходимо написать метод, описывающий сравнение двух таких “сложных” элементов списка.

Данный метод называется Compare и он должен находиться в отдельно созданном классе, реализующем интерфейс IComparer<>.

Первый пример сортировки списка

Сначала выполним сортировку по такому принципу: отсортируем список people по возрастанию длин имён людей.

Для этого создадим класс с именем NameComparer (имя может быть любым допустимым), который реализует интерфейс IComparer<string[]>. Тип string[] мы указываем, поскольку элемент списка в нашем случаем – это строковый массив.

C#

class NameComparer : IComparer<string[]>
{
public int Compare(string[] o1, string[] o2)
{
if (o1.Length > o2.Length)
{
return 1;
}
else if (o1.Length < o2.Length)
{
return -1;
}

return 0;
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

classNameComparerIComparer<string>

{

publicintCompare(stringo1,stringo2)

{

if(o1.Length>o2.Length)

{

return1;

}

elseif(o1.Length<o2.Length)

{

return-1;

}

return;

}

}

В классе обязательно должен содержаться метод Compare, в котором описано как сравнивать два объекта (два элемента списка). В нашем случае эти объекты имеют имена o1 и o2.

Сортировка по возрастанию

Если первый объект по нужному признаку больше второго объекта, то следует возвратить единицу. Если меньше, то минус единицу.

Если объекты равны, то возвращаем ноль.

Для сортировки по убыванию поменяйте местами 1 и -1.

В данном примере мы сравниваем длину строк первых (нулевых) элементов двух массивов, поскольку в первом элементе хранится имя пользователя.

Отсортируем список people. Для этого создадим экземпляр класса NameComparer и вызовем у списка метод Sort, передав в него в качестве аргумента экземпляр созданного класса. После выведем список в консоль.

C#

NameComparer nc = new NameComparer();

people.Sort(nc);

OutputList(people, «Список после сортировки по длине имён»);

1
2
3
4
5

NameComparer nc=newNameComparer();

people.Sort(nc);

OutputList(people,»Список после сортировки по длине имён»);

Второй пример сортировки списка

Рассмотрим еще один пример сортировки. На этот раз отсортируем список people по году рождения людей (от старших к младшим). Для этого создадим класс YearComparer.

C#

class YearComparer : IComparer<string[]>
{
public int Compare(string[] o1, string[] o2)
{
int a = Convert.ToInt32(o1);
int b = Convert.ToInt32(o2);

if (a > b)
{
return 1;
}
else if (a < b)
{
return -1;
}

return 0;
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

classYearComparerIComparer<string>

{

publicintCompare(stringo1,stringo2)

{

inta=Convert.ToInt32(o11);

intb=Convert.ToInt32(o21);

if(a>b)

{

return1;

}

elseif(a<b)

{

return-1;

}

return;

}

}

Поскольку у нас год хранится в виде строки, сначала её необходимо конвертировать в число. Делается это с помощью метода Convert.ToInt32() .

Отсортируем List по годам рождения пользователей и выведем его на экран.

C#

YearComparer yc = new YearComparer();

people.Sort(yc);

OutputList(people, «Список после сортировки по году рождения»);

1
2
3
4
5

YearComparer yc=newYearComparer();

people.Sort(yc);

OutputList(people,»Список после сортировки по году рождения»);

Скачать исходник программы из данного урока:

Скачать исходникРепозиторий проекта на GitHub

Сортировка списка объектов

Сортировка по умолчанию работает с числами и строками. Но это не будет работать со списком настраиваемых объектов. Посмотрим, что произойдет, когда мы попытаемся запустить сортировку по умолчанию для списка объектов.

class Employee:

    def __init__(self, n, a, gen):
        self.name = n
        self.age = a
        self.gender = gen

    def __str__(self):
        return f'Emp'

    # List uses __repr__, so overriding it to print useful information
    __repr__ = __str__


e1 = Employee('Alice', 26, 'F')
e2 = Employee('Trudy', 25, 'M')
e3 = Employee('Bob', 24, 'M')
e4 = Employee('Alexa', 22, 'F')

emp_list = 

print(f'Before Sorting: {emp_list}')

try:
    emp_list.sort()
except TypeError as te:
    print(te)

Вывод:

Before Sorting: , Emp, Emp, Emp]
'<' not supported between instances of 'Employee' and 'Employee'

В этом случае мы должны в обязательном порядке предоставить ключевую функцию для указания поля объектов, которое будет использоваться для сортировки.

# sorting based on age
def sort_by_age(emp):
    return emp.age


emp_list.sort(key=sort_by_age)
print(f'After Sorting By Age: {emp_list}')

Вывод:

After Sorting By Age: , Emp, Emp, Emp]

Мы также можем использовать модуль functools для создания пользовательской логики сортировки для элементов списка.

11 ответов

Лучший ответ

Если я правильно понимаю, вы хотите что-то вроде этого:

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

Причина, по которой ваш код не работает, заключается в том, что использование в столбце (второй в вашем ) не означает «выбрать строки, в которых значение равно« женский »» , Это означает, что нужно выбрать строки, в которых index — это «female», которых в вашем DataFrame может не быть.

218

BrenBarn
26 Апр 2014 в 06:12

В качестве альтернативы есть встроенная функция pd.get_dummies для таких назначений:

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

Это особенно полезно, если у вас есть категориальные переменные с более чем двумя возможными значениями. Эта функция создает столько фиктивных переменных, сколько необходимо для различения всех случаев. Будьте осторожны, чтобы не назначить весь фрейм данных одному столбцу, а вместо этого, если w может быть ‘male’, ‘female’ или ‘нейтральным’, сделайте что-то вроде этого:

Затем у вас остаются две новые колонки, дающие вам фиктивную кодировку «женщина», и вы избавились от колонки со строками.

7

galliwuzz
1 Дек 2016 в 10:27

Вы можете редактировать подмножество данных, используя loc:

В этом случае:

104

Jimmy Petersson
16 Фев 2015 в 12:27

Это очень компактно:

Еще один хороший:

8

Azz
24 Июл 2018 в 10:55

В также есть функция ` X1`, который вы можете использовать для автоматического выполнения этой работы. Он преобразует метки в числа: . См. этот ответ для получения дополнительной информации.

1

Roald
18 Ноя 2017 в 14:54

Вы также можете использовать с , т.е.

{{Х0}} :

Фрейм данных :

Используя для замены значений из словаря:

Результат:

Примечание: со словарем следует использовать, если все возможные значения столбцов в кадре данных определены в словаре, иначе он будет пустым для тех, которые не определены в словаре.

10

student
13 Мар 2018 в 22:20

Использование с

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

Вот почему мы должны связать это с :

Пример, почему не удается :

Для метода правильного мы связываем с , поэтому заполняем значениями из исходного столбца:

Erfan
27 Янв 2020 в 19:43

Небольшое изменение:

32

deckard
30 Апр 2016 в 16:34

Я думаю, что в ответе должно быть указано, какой тип объекта вы получаете во всех методах, предложенных выше: это Series или DataFrame.

Когда вы получите столбец по или (где, предположим, 2 — это номер вашего столбца), вы получите DataFrame. Так что в этом случае вы можете использовать методы DataFrame, такие как .

Когда вы используете или , вы возвращаете Series, а Series не имеют метода , поэтому вам следует использовать такие методы, как , и скоро.

Alex-droid AD
15 Окт 2018 в 11:43

Это также должно работать:

19

Nick Crawford
19 Авг 2016 в 20:35

См. pandas.DataFrame.replace () документы. ,

31

jfs
26 Мар 2016 в 15:08

Массивы на «стероидах»

Часто работаете с массивами? Тогда вам понравится это расширение для работы с коллекциями.

Рассмотрим несколько примеров.

Простая сортировка чисел:

$collection = collect();

$sorted = $collection->sort();

$sorted->values()->all();

// 

Сортировка по одной «колонке» ассоциативного массива:

$collection = collect(,
    ,
    ,
]);

$sorted = $collection->sortBy('price');

$sorted->values()->all();

/*
    ,
        ,
        ,
    ]
*/

Сортировка по нескольким аттрибутам одновременно:

$collection = collect(,
    ,
    ,
    ,
]);

$sorted = $collection->sortBy(,
    ,
]);

$sorted->values()->all();

/*
    ,
        ,
        ,
        ,
    ]
*/

Вы также можете использовать свои функции сортировки при работе с коллекциями:

$collection = collect(,
    ,
    ,
    ,
]);

$sorted = $collection->sortBy( <=> $b,
    fn ($a, $b) => $b <=> $a,
]);

$sorted->values()->all();

/*
    ,
        ,
        ,
        ,
    ]
*/

Коллекции позволяют работать с массивами как в Laravel и функции этого замечательного инструмента далеко не ограничиваются сортировкой.

Изучите документацию и вы влюбитесь в коллекции.

Помогла ли Вам эта статья?

Да
Нет

DataFrame и Series

Чтобы анализировать данные с помощью Pandas, нужно понять, как устроены структуры этих данных внутри библиотеки. В первую очередь разберем, что такое DataFrame и Series.

Pandas Series (серия) — это одномерный массив. Визуально он похож на пронумерованный список: слева в колонке находятся индексы элементов, а справа — сами элементы.

Индексом может быть числовой показатель (0, 1, 2…), буквенные значения (a, b, c…) или другие данные, выбранные программистом. Если особое значение не задано, то числовые индексы проставляются автоматически. Например, от 0 до 5 как в примере выше.

Такая нумерация называется RangeIndex, в ней всегда содержатся числа от 0 до определенного числа N, которое обозначает количество элементов в серии. Собственные значения индексов задаются в квадратных скобках через index, как в примере ниже:

Индексы помогают обращаться к элементам серии и менять их значения. Например, чтобы в нашей серии заменить значения некоторых элементов на 0, мы прописываем индексы нужных элементов и указываем, что они равны нулю:

Можно сделать выборку по нескольким индексам, чтобы ненужные элементы в серии не отображались:

>>> my_series2]

a 5

b 6

f 10

dtype: int64

Pandas DataFrame — это двумерный массив, похожий на таблицу/лист Excel (кстати, данные из Excel можно читать с помощью команды pandas.read_excel(‘file.xls’)). В нем можно проводить такие же манипуляции с данными: объединять в группы, сортировать по определенному признаку, производить вычисления. Как любая таблица, датафрейм состоит из столбцов и строк, причем столбцами будут уже известные объекты — Series.

Чтобы проверить, действительно ли серии — это части датафрейма, можно извлечь любую колонку из таблицы. Возьмем набор данных о нескольких странах СНГ, их площади и населении и выберем колонку country:

>>> df = pd.DataFrame({

… ‘country’: ,

… ‘population’: ,

… ‘square’:

… })

>>> df

country population square

0 Kazakhstan 17.04 2724902

1 Russia 143.50 17125191

2 Belarus 9.50 207600

3 Ukraine 45.50 603628

В итоге получится простая серия, в которой сохранятся те же индексы по строкам, что и в исходном датафрейме.

>>> df

0 Kazakhstan

1 Russia

2 Belarus

3 Ukraine

Name: country, dtype: object

>>> type(df)

<class ‘pandas.core.series.Series’>

Курс 

Аналитика данных с нуля

Получите востребованные навыки и освойте профессию аналитика данных за 6 месяцев. Дополнительная скидка 5% по промокоду BLOG.

Узнать больше

Кроме этого, у датафрейма есть индексы по столбцам, которые задаются вручную. Для простоты написания кода обозначим страны индексами из двух символов: Kazakhstan — KZ, Russia — RU и так далее:

>>> df = pd.DataFrame({

… ‘country’: ,

… ‘population’: ,

… ‘square’:

… }, index=)

>>> df

country population square

KZ Kazakhstan 17.04 2724902

RU Russia 143.50 17125191

BY Belarus 9.50 207600

UA Ukraine 45.50 603628

>>> df.index =

>>> df.index.name = ‘Country Code’

>>> df

country population square

Country Code

KZ Kazakhstan 17.04 2724902

RU Russia 143.50 17125191

BY Belarus 9.50 207600

UA Ukraine 45.50 603628

По индексам можно искать объекты и делать выборку, как в Series. Возьмем тот же датафрейм и сделаем выборку по индексам KZ, RU и колонке population методом .loc (в случае .loc мы используем квадратные скобки, а не круглые, как с другими методами), чтобы сравнить население двух стран:

>>> df.loc, ‘population’]

Country Code

KZ 17.04

RU 143.50

Name: population, dtype: float64

Также в DataFrame производят математические вычисления. Например, рассчитаем плотность населения каждой страны в нашем датафрейме. Данные в колонке population (численность населения) делим на square (площадь) и получаем новые данные в колонке density, которые показывают плотность населения:

>>> df = df / df * 1000000

>>> df

country population square density

Country Code

KZ Kazakhstan 17.04 2724902 6.253436

RU Russia 143.50 17125191 8.379469

BY Belarus 9.50 207600 45.761079

UA Ukraine 45.50 603628 75.377550

Курс 

Data Science с нуля

Закрепите навыки Data Science и получите перспективную профессию за 13 месяцев. Дополнительная скидка 5% по промокоду BLOG.

Узнать больше

Статистический анализ в Pandas

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

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

Метод Description
count() Подсчитывает количество всех непустых наблюдений
sum() Возвращает сумму элементов данных.
mean() Возвращает среднее значение всех элементов данных.
median() Возвращает медианное значение всех элементов данных.
mode() Возвращает режим всех элементов данных
std() Возвращает стандартное отклонение всех элементов данных.
min() Возвращает минимальный элемент данных среди всех входных элементов.
max() Возвращает максимальный элемент данных среди всех входных элементов.
abs() Возвращает абсолютное значение.
prod() Возвращает произведение значений данных.
cumsum() Возвращает кумулятивную сумму значений данных.
cumprod() Возвращает совокупное произведение значений данных.
describe() Он отображает статистическую сводку всех записей за один снимок, т.е. (сумма, количество, мин, среднее и т. Д.)

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

import pandas
import numpy


input = {'Name':pandas.Series(),
   'Marks':pandas.Series(),
   'Roll_num':pandas.Series()
}

#Creating a DataFrame
data_frame = pandas.DataFrame(input)
print(data_frame)

Выход:

    Name     Marks      Roll_num
0   John     44         1
1   Bran     48         2
2   Caret    75         3
3   Joha     33         4
4   Sam      99         5

Заключение ↑

Теперь вы знаете, как использовать два основных метода библиотеки pandas: и . Обладая этими знаниями, вы можете выполнять базовый анализ данных с помощью DataFrame. Хотя между этими двумя методами есть много общего, различие между ними позволяет понять, какой из них использовать для разных аналитических задач. В этом руководстве вы узнали, как:

  • Сортировать Dataframe pandas по значениям одного или нескольких столбцов
  • Использовать параметр , чтобы изменить порядок сортировки
  • Сортировать DataFrame по индексу с помощью
  • Упорядочивать недостающие данные при сортировке значений
  • Сортировать DataFrame на месте, используя для параметра значение

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

По мотивам Pandas Sort: Your Guide to Sorting Data in Python

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: