Эта статья участвовала в "Проект «Звезда раскопок»”, чтобы выиграть творческий подарочный пакет и бросить вызов творческим поощрительным деньгам.
Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
1. Знакомство с пандами
Pandas — это инструмент на основе NumPy, созданный для решения задач анализа данных. Pandas включает в себя большое количество библиотек и некоторые стандартные модели данных, предоставляя инструменты, необходимые для эффективной работы с большими наборами данных. pandas предоставляет большое количество функций и методов, которые позволяют нам быстро и легко обрабатывать данные.
2. Серийный объект
- Панды основаны на двух типах данных: серии и кадре данных.
- Series — это самый простой объект в Pandas, Series похож на одномерный массив. Фактически, Series в основном основан на объектах массива NumPy. В отличие от массивов NumPy, Series может настраивать метки для данных, то есть индексы, а затем получать доступ к данным в массиве через индексы.
- Dataframe представляет собой двумерную табличную структуру. Кадры данных Pandas могут хранить множество различных типов данных, и каждая ось имеет свою собственную метку. Вы можете думать об этом как о серии элементов словаря.
3, серия выполняет арифметические операции
"""
对series的算术运算都是基于index进行的。
我们可以用加减乘除(+- */)这样的运算符对两个series进行运算,
Pandas将会根据索引 index,对响应的数据进行计算,结果将会以浮点数的形式存储,以避免丢失精度。
如果Pandas在两个series里找不到相同的 index,对应的位置就返回一个空值 NaN'' '
"""
series1 = pd.Series( [ 1,2,3,4],[ 'London ', 'HongKong' , ' Humbai ' , 'lagos'] )
series2 = pd.Series( [ 1,3,6,4],[ 'London ' , ' Accra ' , 'lagos ' , ' Delhi ' ] )
print ( series1-series2 )
print('*'*30)
print ( series1+series2 )
print('*'*30)
print ( series1*series2)
4, создание DataFrame
DataFrame (таблица данных) — это ⒉-мерная структура данных, данные хранятся в виде таблицы, разбитой на несколько строк и столбцов. пройти через DataFrame, вы можете легко обрабатывать данные. Общие операции, такие как выбор и замена данных в строках или столбцах, также могут реорганизовать таблицы данных, изменить индексы и несколько фильтров. В основном мы можем думать о DataFrame как о наборе Series с одним и тем же индексом. Вызов DataFrame() может преобразовывать данные в различных форматах в объект DataFrame.Его три параметра: данные, индекс и столбцы — это данные, индекс строки и индекс столбца соответственно.
5. Общие свойства объектов DataFrame
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
# dataframe常用属性
df_dict = {
'name':['James','Curry','Iversion'],
'age':['18','20','19'],
'national':['us','China','us']
}
df = pd.DataFrame(data=df_dict,index=['0','1','2'])
print(df)
# 获取行数和列数
print(df.shape)
# # 获取行索引
print(df.index.tolist())
# # 获取列索引
print(df.columns.tolist())
# 获取数据的类型
print(df.dtypes)
# 获取数据的维度
print(df.ndim)
# values属性也会以二维ndarray的形式返回DataFrame的数据
print(df.values)
# 展示df的概览
print(df.info())
# 显示头几行,默认显示5行
print(df.head(2))
# 显示后几行
print(df.tail(1))
# 获取DataFrame的列
print(df['name'])
#因为我们只获取一列,所以返回的就是一个 Series
print(type(df['name']))
# 如果获取多个列,那返回的就是一个 DataFrame 类型:
print(df[['name','age']])
print(type(df[['name','age']]))
# 获取一行
print(df[0:1])
# 去多行
print(df[1:3])
# 取多行里面的某一列(不能进行多行多列的选择)
print(df[1:3][['name','age']])
# 注意: df[]只能进行行选择,或列选择,不能同时多行多列选择。
'''
df.loc 通过标签索引行数据
df.iloc 通过位置获取行数据
'''
# 获取某一行某一列的数据
print(df.loc['0','name'])
# 一行所有列
print(df.loc['0',:])
# 某一行多列的数据
print(df.loc['0',['name','age']])
# 选择间隔的多行多列
print(df.loc[['0','2'],['name','national']])
# 选择连续的多行和间隔的多列
print(df.loc['0':'2',['name','national']])
# 取一行
print(df.iloc[1])
# 取连续多行
print(df.iloc[0:2])
# 取间断的多行
print(df.iloc[[0,2],:])
# 取某一列
print(df.iloc[:,1])
# 某一个值
print(df.iloc[1,0])
# 修改值
df.iloc[0,0]='panda'
print(df)
# dataframe中的排序方法
df = df.sort_values(by='age',ascending=False)
# ascending=False : 降序排列,默认是升序
print(df)
6, индекс изменения фрейма данных, столбцы
df1 = pd.DataFrame(np.arange(9).reshape(3, 3), index = ['bj', 'sh', 'gz'], columns=['a', 'b', 'c'])
print(df1)
# 修改 df1 的 index
print(df1.index) # 可以打印出print的值,同时也可以为其赋值
df1.index = ['beijing', 'shanghai', 'guangzhou']
print(df1)
# 自定义map函数(x是原有的行列值)
def test_map(x):
return x+'_ABC'
# inplace:布尔值,默认为False。指定是否返回新的DataFrame。如果为True,则在原df上修改,返回值为None。
print(df1.rename(index=test_map, columns=test_map, inplace=True))
# 同时,rename 还可以传入字典,为某个 index 单独修改名称
df3 = df1.rename(index={'bj':'beijing'}, columns = {'a':'aa'})
print(df3)
# 列转化为索引
df1=pd.DataFrame({'X':range(5),'Y':range(5),'S':list("abcde"),'Z':[1,1,2,2,2]})
print(df1)
# 指定一列为索引 (drop=False 指定同时保留作为索引的列)
result = df1.set_index('S',drop=False)
result.index.name=None
print(result)
# 行转为列索引
result = df1.set_axis(df1.iloc[0],axis=1,inplace=False)
result.columns.name=None
print(result)