Обработка данных Pandas — список часто используемых функций (ниже)

анализ данных
Обработка данных Pandas — список часто используемых функций (ниже)

Публичный аккаунт WeChat: «Python Reading Finance»
Если у вас есть какие-либо вопросы или предложения, пожалуйста, оставьте сообщение в публичном аккаунте

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

Данные, используемые для демонстрации, следующие:

In [11]: data
Out[11]:
  company  gender  salary   age
0       B  female      30  40.0
1       A  female      36  31.0
2       B  female      35  28.0
3       B  female       9  18.0
4       B  female      16  43.0
5       A    male      46  22.0
6       B  female      15  28.0
7       B  female      33  40.0
8       C    male      19  32.0

.astype()

Объект:SeriesиDataFrame

Основная цель: Изменить тип данных поля, который можно использовать в случае большого количества данныхУменьшить объем памяти, занимаемой данными, в основном используется дляSeries.

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

# 把age字段转为int类型
In [12]: data["age"] = data["age"].astype(int)

In [13]: data
Out[13]:
  company  gender  salary  age
0       B  female      30   40
1       A  female      36   31
2       B  female      35   28
3       B  female       9   18
4       B  female      16   43
5       A    male      46   22
6       B  female      15   28
7       B  female      33   40
8       C    male      19   32

.rename()

Объект:Series,DataFrame(в большинстве случаев)

Основное использование: в основном используется для модификацииDataFrameимя столбца

Основные параметры:

  • столбцы (dict-like or function)

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

  • на месте (boolean, default False)

    Воздействовать ли на исходный объект

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

# 将'age'更改为员工编号'number',并作用于原对象
In [15]: data.rename(columns={'age':'number'},inplace=True)

In [16]: data
Out[16]:
  company  gender  salary  number
0       B  female      30      40
1       A  female      36      31
2       B  female      35      28
3       B  female       9      18
4       B  female      16      43
5       A    male      46      22
6       B  female      15      28
7       B  female      33      40
8       C    male      19      32

.set_index()

Объект:DataFrame

Основное использование: дляDataFrameОдно (более) из полей задано как индекс

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

In [19]: data.set_index('number',inplace=True)

In [20]: data
Out[20]:
       company  gender  salary
number
40           B  female      30
31           A  female      36
28           B  female      35
18           B  female       9
43           B  female      16
22           A    male      46
28           B  female      15
40           B  female      33
32           C    male      19

.reset_index()

Объект:Series,DataFrame

Основная цель: сбросить индекс, индекс сброса по умолчанию0~len(df)-1

Основные параметры:

  • уронить (boolean, default False)

    Следует ли отказаться от исходного индекса, см. демонстрацию ниже.

  • на месте (boolean, default False)

    Воздействовать ли на исходный объект

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

# drop = True,重置索引,并把原有的索引丢弃
In [22]: data.reset_index(drop=True)
Out[22]:
  company  gender  salary
0       B  female      30
1       A  female      36
2       B  female      35
3       B  female       9
4       B  female      16
5       A    male      46
6       B  female      15
7       B  female      33
8       C    male      19

# drop = False,重置索引
# 原索引列'number'作为新字段进入DataFrame
In [23]: data.reset_index(drop=False,inplace=True)

In [24]: data
Out[24]:
   number company  gender  salary
0      40       B  female      30
1      31       A  female      36
2      28       B  female      35
3      18       B  female       9
4      43       B  female      16
5      22       A    male      46
6      28       B  female      15
7      40       B  female      33
8      32       C    male      19

.drop_duplicates()

Объект:Series,DataFrame

Основная цель: удалить повторяющиеся значения, функции иSQLсерединаdistinctпохожий

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

In [26]: data['company'].drop_duplicates()
Out[26]:
0    B
1    A
8    C
Name: company, dtype: object

.drop()

Объект:Series,DataFrame

Основное использование: часто используется для удаленияDataFrameнекоторые поля в

Основные параметры:

  • столбцы (single label or list-like)

    Указывает поле для удаления

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

# 删掉'gender'列
In [27]: data.drop(columns = ['gender'])
Out[27]:
   number company  salary
0      40       B      30
1      31       A      36
2      28       B      35
3      18       B       9
4      43       B      16
5      22       A      46
6      28       B      15
7      40       B      33
8      32       C      19

.isin()

Объект:Series,DataFrame

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

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

# 筛选出A公司和C公司的员工记录
In [29]: data.loc[data['company'].isin(['A','C'])]
Out[29]:
   number company  gender  salary
1      31       A  female      36
5      22       A    male      46
8      32       C    male      19

pd.cut()

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

Основные параметры:

  • Икс (array-like)

    Одномерные данные, которые необходимо дискретизировать

  • мусорные ведра (int, sequence of scalars, or IntervalIndex)

    Установите интервал, на который нужно разделить, вы можете указатьКоличество интервалов, вы также можете указатьпрерывность

  • этикетки (array or bool, optional)

    Установить метку интервала

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

# 把薪水分成5个区间
In [33]: pd.cut(data.salary,bins = 5)
Out[33]:
0     (23.8, 31.2]
1     (31.2, 38.6]
2     (31.2, 38.6]
3    (8.963, 16.4]
4    (8.963, 16.4]
5     (38.6, 46.0]
6    (8.963, 16.4]
7     (31.2, 38.6]
8     (16.4, 23.8]
Name: salary, dtype: category
Categories (5, interval[float64]): [(8.963, 16.4] < (16.4, 23.8] < (23.8, 31.2] < (31.2, 38.6] <(38.6, 46.0]]
                                     
# 自行指定间断点
In [32]: pd.cut(data.salary,bins = [0,10,20,30,40,50])
Out[32]:
0    (20, 30]
1    (30, 40]
2    (30, 40]
3     (0, 10]
4    (10, 20]
5    (40, 50]
6    (10, 20]
7    (30, 40]
8    (10, 20]
Name: salary, dtype: category
Categories (5, interval[int64]): [(0, 10] < (10, 20] < (20, 30] < (30, 40] < (40, 50]]

# 指定区间的标签                                                                             
In [34]: pd.cut(data.salary,bins = [0,10,20,30,40,50],labels = ['低','中下','中','中上','高'])
Out[34]:
0     中
1    中上
2    中上
3     低
4    中下
5     高
6    中下
7    中上
8    中下
Name: salary, dtype: category
Categories (5, object): [低 < 中下 < 中 < 中上 < 高]

pd.qcut()

Основная цель: дискретизация непрерывных переменных, отличных отpd.cut()разделить на конкретные значения,pd.qcut()использоватьквантильразделить интервал

Основные параметры:

  • Икс (array-like)

    Одномерные данные, которые необходимо дискретизировать

  • Пожалуйста(integer or array of quantiles)

    Установите интервал, на который нужно разделить, вы можете указатьинтервальный формат, вы также можете указатьпрерывность

  • этикетки (array or boolean, default None)

    Установить метку интервала

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

# 按照0-33.33%,33.33%-66.67%,66.67%-100%百分位进行划分
In [35]: pd.qcut(data.salary,q = 3)
Out[35]:
0    (18.0, 33.667]
1    (33.667, 46.0]
2    (33.667, 46.0]
3     (8.999, 18.0]
4     (8.999, 18.0]
5    (33.667, 46.0]
6     (8.999, 18.0]
7    (18.0, 33.667]
8    (18.0, 33.667]
Name: salary, dtype: category
Categories (3, interval[float64]): [(8.999, 18.0] < (18.0, 33.667] < (33.667, 46.0]]

.where()

Объект:Series,DataFrame

Основная цель: заменить неквалифицированное значение указанным значением, что эквивалентно выполнениюif-else

Основные параметры:

  • конд (boolean Series/DataFrame, array-like, or callable)

    условия для фильтрации

  • разное (scalar, Series/DataFrame, or callable)

    не встречаетсяcondзначение условия (результатFalse),использоватьotherзаменить значение

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

# 语句解析
# 若salary<=40,则保持原来的值不变
# 若salary大于40,则设置为40
In [38]: data['salary'].where(data.salary<=40,40)
Out[38]:
0    30
1    36
2    35
3     9
4    16
5    40
6    15
7    33
8    19
Name: salary, dtype: int32

pd.concat()

Основное использование: для объединения несколькихSeriesилиDataFrameСложить вместе (можно горизонтальное или вертикальное написание)

Основные параметры:

  • объекты (a sequence or mapping of Series or DataFrame objects)

    для сращиванияSeriesилиDataFrame, обычно помещаемый в список и передаваемый в

  • ось (0/'индекс', 1/'столбцы')

    Управляет сшиванием данных по горизонтали или по вертикали.По умолчанию используется вертикальное сшивание.

  • игнорировать_индекс (bool, default False)

    Оставить ли оригиналSeiresилиDataFrameвнутренний индекс, еслиTrueЗатем создайте новый индекс (0 ~ n-1) для объединенных данных.

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

# 分别取data的前三条和后三条为data1和data2
In [41]: data1 = data.head(3)
In [42]: data1
Out[42]:
   number company  gender  salary
0      40       B  female      30
1      31       A  female      36
2      28       B  female      35

In [43]: data2 = data.tail(3)
In [44]: data2
Out[44]:
   number company  gender  salary
6      28       B  female      15
7      40       B  female      33
8      32       C    male      19

# 拼接数据
In [45]: pd.concat([data1,data2],ignore_index = False)
Out[45]:
   number company  gender  salary
0      40       B  female      30
1      31       A  female      36
2      28       B  female      35
6      28       B  female      15
7      40       B  female      33
8      32       C    male      19

# 拼接数据并重置索引
In [46]: pd.concat([data1,data2],ignore_index=True)
Out[46]:
   number company  gender  salary
0      40       B  female      30
1      31       A  female      36
2      28       B  female      35
3      28       B  female      15
4      40       B  female      33
5      32       C    male      19

.pivot_table()

Объект:DataFrame

Основное использование: дляDataFrameСводные данные, эквивалентные сводной таблице в Excel

Основные параметры:

  • значения (column to aggregate, optional)

    Поле, используемое для операции агрегирования (целевая переменная сводки)

  • показатель (column, Grouper, array, or list of the previous)

    Аналог сводной таблицыЗаголовки строк

  • столбцы (column, Grouper, array, or list of the previous)

    Аналог сводной таблицыметки столбцов

  • аггфунк (function, list of functions, dict, default numpy.mean)

    Какая операция агрегирования выполняется над значениями

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

# 从公司和性别两个维度对薪水进行数据透视
# 看看这两个维度下的平均薪资水平
In [47]: data.pivot_table(values = 'salary',index = 'company',
                          columns = 'gender',aggfunc=np.mean)
Out[47]:
gender   female  male
company
A          36.0  46.0
B          23.0   NaN
C           NaN  19.0

Функции, обычно используемые в Pandas, организованы здесь, как дляmapиapplyПодобные вещи не будут здесь подробно описаны, а подробное введение можно найти в статьях, написанных ранее. Надеюсь, эти функции могут быть вам полезны!

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

Отсканируйте код, чтобы подписаться на официальный аккаунт"Питон Чтение Финансов", получите галантерею в первый раз!

底部二维码.png