Данные типа серии серии Pandas
Эта статья официально начинает серию статей о Pandas, начиная с:Как создавать данные в пандахНачинать. Данные, созданные в Pandas, состоят из двух типов:
- Тип серии
- Тип кадра данных
Карта контента
Тип серии
Серия представляет собой структуру одномерного массива, которая состоит только из индекса (index) и значения (value).
Индекс серии уникален, индекс может быть как числом, так и символом, система автоматически преобразует их в тип объекта (тип символа в пандах).
Тип кадра данных
DataFrame — это двумерная структура данных, которая объединяет несколько рядов по столбцам, и каждый столбец выносится как ряд, кроме того, что у него есть индекс и значение, есть еще столбец. Рисунок ниже:
- Индекс Индекс: 0, 1, 2, 3…….
- Атрибуты поля: фрукт, число
- Значение стоимости: яблоки, виноград и т. д.; 200, 300 и т. д.
библиотека импорта
Сначала импортируйте две библиотеки:
import pandas as pd
import numpy as np
Создание и эксплуатация типа серии
- Генерируется из итерируемых списков типов, кортежей
- Генерируется словарем python
- Генерируется массивом numpy
генерация списка
Генерация данных серии по списку
s1 = pd.Series([7,8,9,10])
s1
# 结果
0 7
1 8
2 9
3 10
dtype: int64
s2 = pd.Series(list(range(1,8)))
s2
# 结果
0 1
1 2
2 3
3 4
4 5
5 6
6 7
dtype: int64
генерация кортежа
Следующий метод заключается в создании данных серии из кортежей.
s3 = pd.Series((7,8,9,10,11))
s3
# 结果
0 7
1 8
2 9
3 10
4 11
dtype: int64
s4 = pd.Series(tuple(range(1,8))) # 从1到8,不包含8
s4
# 结果
0 1
1 2
2 3
3 4
4 5
5 6
6 7
dtype: int64
Создать со словарем
Ключ словаря — это индекс, а значение — это значение, соответствующее структуре Series.
dic_data = {"0":"苹果", "1":"香蕉", "2":"哈密瓜","3":"橙子"}
s5 = pd.Series(dic_data)
s5
# 结果
0 苹果
1 香蕉
2 哈密瓜
3 橙子
dtype: object
Используйте пустые массивы
s6 = pd.Series(np.arange(3,9))
s6
# 结果
0 3
1 4
2 5
3 6
4 7
5 8
dtype: int64
указать индекс (список)
Индекс по умолчанию — это значение, начинающееся с 0, и каждый индекс можно указать во время создания.
# 默认
s1 = pd.Series([7,8,9,10])
s1
# 结果
0 7
1 8
2 9
3 10
dtype: int64
s7 = pd.Series([7,8,9,10], index=["A","B","C","D"]) # 指定索引值
s7
# 结果
A 7
B 8
C 9
D 10
dtype: int64
Указать индекс (форма словаря)
Ключи словаря как значения индекса
dic_data = {"水果1":"苹果",
"水果2":"香蕉",
"水果3":"哈密瓜",
"水果4":"橙子"
}
s8 = pd.Series(dic_data)
s8
# 结果
水果1 苹果
水果2 香蕉
水果3 哈密瓜
水果4 橙子
dtype: object
Посмотреть значение индекса
s8
# 结果
水果1 苹果
水果2 香蕉
水果3 哈密瓜
水果4 橙子
dtype: object
s8.index # 查看索引值
# 结果
Index(['水果1', '水果2', '水果3', '水果4'], dtype='object')
просмотр значения
s8
# 结果
水果1 苹果
水果2 香蕉
水果3 哈密瓜
水果4 橙子
dtype: object
s8.values
# 结果
array(['苹果', '香蕉', '哈密瓜', '橙子'], dtype=object)
изменить индекс
# 新索引
index_new = ['one', 'two', 'three', 'four']
# 赋值
s8.index = index_new
s8
# 结果
one 苹果
two 香蕉
three 哈密瓜
four 橙子
dtype: object
Проверьте, есть ли нулевое значение
s7
# 结果
A 7
B 8
C 9
D 10
dtype: int64
s7.isnull() # 没有空值
A False
B False
C False
D False
dtype: bool
s7.notnull()
A True
B True
C True
D True
dtype: bool
Просмотр значения индекса
s7
A 7
B 8
C 9
D 10
dtype: int64
s7["A"] # 自定义的索引值
7
s7[0] # 默认的数值索引
7
s7["D"]
10
s7[3]
10
Преобразование серии в словарь
s_dic = s7.to_dict() # 转成字典形式
s_dic
{'A': 7, 'B': 8, 'C': 9, 'D': 10}
type(s_dic) # 结果显示为字典类型
dict
Назовите индекс серии
s8
one 苹果
two 香蕉
three 哈密瓜
four 橙子
dtype: object
s8.index # 原索引
Index(['one', 'two', 'three', 'four'], dtype='object')
s8.index.name = "水果" # 索引命名
s8
Результат отображается как:
水果
one 苹果
two 香蕉
three 哈密瓜
four 橙子
dtype: object
s8.index # 更改之后的索引
Index(['one', 'two', 'three', 'four'], dtype='object', name='水果')
Изменить значения серии
s8
# 结果为
水果
one 苹果
two 香蕉
three 哈密瓜
four 橙子
dtype: object
s8["three"] = "西瓜" # 等价于s8[2] = "西瓜"
s8
Измененное значение:
水果
one 苹果
two 香蕉
three 西瓜
four 橙子
dtype: object
Структура Series преобразуется в структуру DataFrame.
s8
水果
one 苹果
two 香蕉
three 西瓜
four 橙子
dtype: object
В процессе преобразования s8 в DataFrame участвуют 3 функции:
- to_frame: конвертировать в DataFrame
- reset_index: сброс индекса типа DataFrame
- переименовать: свойства поля DataFrame сбрасываются
Соответствующее содержимое DataFrame будет подробно объяснено в следующем разделе, так что следите за обновлениями!