Pandas 是Python的数据处理包,全名:Python Data Analysis Library,Pandas 是非常著名的开源数据处理库,我们可以通过它完成对数据集进行快速读取、转换、过滤、分析等一系列操作。Pandas库是基于Numpy库来创建的,Numpy主要用于矩阵操作,而Pandas主要用于数据处理。支持多种数据格式,甚至包括excel和SQL数据库;数据对齐,缺失数据处理,数据排序等常规数据整理操作;基于标签的数据集操作,包括切片和采样等;高性能的merge和join操作;支持时序数据操作。
1.现有如下图所示的表格数据,请对该数据进行以下操作。
A B C D
0 1 5 8 8
1 2 2 4 9
2 7 4 2 3
3 3 0 5 2
问题1:创建一个结构如上图所示的DataFrame对象。
#1
arr=np.array([[1,5,8,8],[2,2,4,9],[7,4,2,3],[3,0,5,2]])
mm=pd.DataFrame(arr)
nn=pd.DataFrame(arr,columns=['A','B','C','D'])
print(nn)
问题2:将图中的B列数据按降序排序。
#2
frame=pd.DataFrame([[1,5,8,8],[2,2,4,9],[7,4,2,3],[3,0,5,2]],columns=['A','B','C','D'])
print(frame)
print('B列排序后:')
print(frame.sort_values(by='B',ascending=False))
问题3:将排序后的数据写入到CSV文件,取名为write_data.csv.
#3
frame=pd.DataFrame([[1,5,8,8],[2,2,4,9],[7,4,2,3],[3,0,5,2]],columns=['A','B','C','D'])
frame.to_csv(r'E:\1.csv',index=False)
print("写入完毕!")
file=open(r'E:\1.csv')
file_data=pd.read_csv(file)
print(file_data)
知识点总结
1.#1pandas的数据结构series
#1pandas的数据结构series
import pandas as pd
ser_obj=pd.Series([1,2,3])#使用Series类的构造方法来创建一个Series类对象
print(ser_obj)
ser_obj1=pd.Series([1,2,3],index=['a','b','c'])#为数据指定索引
print(ser_obj1)
print(ser_obj1['a'])
year_data={2001:17.8,2002:20.1,2003:16.5}
ser_obj2=pd.Series(year_data)
print(ser_obj2)
print(ser_obj1.index)#index属性获取Series对象的属性
print(ser_obj1.values)#values属性获取Series对象的数据
2.#2 pandas的数据结构dataframe
#2 pandas的数据结构dataframe
import numpy as np
import pandas as pd
arr1=np.array([['a','b','c'],['d','e','f']])
m=pd.DataFrame(arr1) #基于数组创建DataFrame对象,行索引和列索引自动从0开始print(m)
n=pd.DataFrame(arr1,columns=["No1","No2","No3"]) #自行指定列索引
print(n)
element=n['No2'] #通过列索引的方式获取一列数据
print(element)
element1=n.No2 #通过属性获取列数据
print(element1)
n['No4']=['g','h'] #增加No4一列数据
print(n)
del n['No4'] #删除No4这列数据
print(n)
3.#3 pandas索引操作及高级索引——索引对象
#3 pandas索引操作及高级索引——索引对象
import pandas as pd
ser_obj=pd.Series(range(5),index=['a','b','c','d','e'])
ser_index=ser_obj
print(ser_index)
print(ser_index[2])
4.#4 pandas 索引操作及高级索引-索引操作
#4 pandas 索引操作及高级索引-索引操作
import pandas as pd
ser_obj=pd.Series(range(5),index=['a','b','c','d','e'])
print(ser_obj[2])#使用索引位置获取数据
print(ser_obj['c']) #使用索引名获取数据
print(ser_obj[2:4])#使用位置索引进行切片
print(ser_obj['c':'e'])#使用索引名进行切片
print(ser_obj[[0,1,4]])#通过不连续位置索引获取数据
print(ser_obj[['a','b','e']])#通过不连续索引名获取数据
ser_bool=ser_obj>2 #创建bool型Series对象
print(ser_bool)
print(ser_obj[ser_bool])#获取结果为True的数据
5.#5 s算数运算与数据对齐
#5 s算数运算与数据对齐
import pandas as pd
obj1=pd.Series(range(10,13))
obj2=pd.Series(range(20,25))
print(obj1+obj2)
obj1=obj1.add(obj2,fill_value=0)
print(obj1)
6.#6 数据排序-按索引排序
#6 数据排序-按索引排序
import pandas as pd
import numpy as np
obj1=pd.Series(range(10,13))
obj2=pd.DataFrame(np.arange(9).reshape(3,3),index=[4,3,5])
print(obj1.sort_index())
print(obj1.sort_index(ascending=False))
print(obj2)
print(obj2.sort_index())
print(obj2.sort_index(axis=1,ascending=False))
7.#7 数据排序-按值排序
#7 数据排序-按值排序
import pandas as pd
import numpy as np
obj1=pd.Series([4,np.nan,6,np.nan,-3,2])
obj2=pd.DataFrame([[0.4,-0.1,-0.3,0.0],[0.2,0.6,-0.1,-0.7],[0.8,0.6,-0.5,0.1]])
print(obj1.sort_values())#按值升序排列
print(obj2.sort_values(by=2))#对列索引为2的数据进行排序