以下为我学习python数据处理部分的测试代码,共分五个小部分:
1.Serises对象
2.DataFrame对象
3.数据的增,删,改,查
4.数据清洗
5.数据转换
import pandas as pd
import numpy
#代码中的print都是测试函数
#解决数据输出时列名不对齐的情况
pd.set_option('display.unicode.east_asian_width',True)
""" 初识series对象 """
data=[80,90,80]
series=pd.Series(data,index=[1,2,3])
#print(series)
#输出:
# 1 80
# 2 90
# 3 80
# dtype: int64
#可以使用位置(或标签(当index等于字符串时))索引直接访问数据(索引为index设置,在这里不能使用0索引,因为未设置0索引)
#print(series[1])
#要通过多个索引获取索引值时,使用列表作为一个索引元素
#print(series[[1,2,3]])
#可以使用values和index方法获取索引值和索引
#print(series.index)
#print(series.values)
""" 初识dataframe对象 """
#通过二维数组创建数据
data1=[[80,90,100],[70,60,90],[100,80,60]]
#index表示行索引,columns表示列索引,dtype表示数据类型(不同于python的数据类型),copy用于复制数据
dataframe1=pd.DataFrame(data=data1,index=[1,2,3],columns=['语文','数学','英语'],dtype=None,copy=None)
#print(dataframe1)
#通过字典(字典的值只能是一维数组或单个的简单数据)创建数据
data2={'语文':[100,90,80],
'数学':[90,70,100],
'英语':[80,70,90],
'班级':'高三二班'}#班级由于只有一个数据,因此会重复三次该数据
name=['小明','小帅','小美']
dataframe2=pd.DataFrame(data=data2,index=name)
#print(dataframe2)
""" 数据的增删改查 """
""" 增 """
#按列增加数据
#直接索引增加
#使用loc属性增加
dataframe2['物理']=[80,90,100]
dataframe2.loc[:,'化学']=[80,90,100]
dataframe2.insert(1,'生物',[90,70,80])#图中的1为要插入的列数位置
#按行增加数据
#使用loc属性增加
dataframe2.loc['小李']=[80,90,100,70,'高三二班',90,100]
dataframe3=pd.DataFrame(
{'语文':[100,90,80],
'生物':[90,70,100],
'数学':[80,70,90],
'英语':[100,90,80],
'班级':'高三二班',
'物理':[90,70,100],
'化学':[80,70,90]},index=['小王','小刘','小赵'])
dataframe2=dataframe2.append(dataframe3)
#print(dataframe2)
""" 删 """
#删除数据
#drop方法
#drop(labels=None,axis=0,index=None,columns=None,level=None,inplace=Flase,errors='raise')
#labels:行标签或列标签,axis:0表示按行删除,1表示按列删除,level,按索引删除数据(有两级索引的数据),inplace:为True时对原数组修改并替换
dataframe4=dataframe2.drop('班级',axis=1,inplace=True)#若inplace为默认则原dataframe2数据不变,若为True,则改变dataframe2
dataframe4=dataframe2.drop(index=dataframe2[dataframe2['数学'].isin([80])].index,inplace=True)##删除"数学"列中包含88的行
#print(dataframe2)
""" 改 """
#修改数据
#修改列标题
#使用columns属性,必须要将所有列都写上
#使用rename方法
dataframe2.columns=['语文1','数学','英语','生物','物理','化学']
dataframe2.rename(columns={'语文1':'语文'},inplace=True)
#print(dataframe2)
#修改行标题
#使用index属性
#使用rename方法
dataframe2.index=list('123456')
dataframe2.rename({'语文1':'语文'},axis=0,inplace=True)#在rename方法中,不能同时指定'axis'参数和'index'或'columns'参数。
#print(dataframe2)
#修改数据
#loc属性
dataframe2.loc['1']=[100,100,93,95,92,94]#整行修改
dataframe2.loc[:,'语文']=[100,100,100,100,100,100]#整列修改
dataframe2.loc['1','语文']='99'#修改单个数据
#iloc属性指定行列位置
dataframe2.iloc[0,0]=100#修改单个数据
dataframe2.iloc[:,0]#修改整列数据
dataframe2.iloc[0,:]#修改整行数据
""" 查 """
#查询数据通过索引,这部分在访问数据时已知,不添加示例了
#要记住访问标签时先列后行
""" 数据清洗 """
#NaN数据处理,NaN表示空缺值
#定义空缺值
dataframe2['语文']['1']=numpy.nan#访问时标签先列后行
#print(dataframe2)
#检测空缺值
#isnull方法:判断是否是空缺值
#notnull方法:判断是否是非空缺值
#print(dataframe2.isnull())
#print(dataframe2.notnull())
#将NaN数据删除dropna方法
#将包含NaN元素所在的整行数据删除
dataframe3=dataframe2.dropna(axis=0,inplace=False)
#print(dataframe3)
#将包含NaN元素所在的整列数据删除
dataframe4=dataframe2.dropna(axis=1,inplace=False)
#print(dataframe4)
#使用how参数,当等于'all'时,将删除整行整列数据都是NaN元素的数据
dataframe5=dataframe2.dropna(how='all',axis=0,inplace=False)
#print(dataframe5)#此时dataframe5不变
#NaN元素的替换使用fillna方法
dataframe6=dataframe2.fillna(0,inplace=False)#使用0替换dataframe2对象中的NaN
#print(dataframe6)
#去除重复数据(数据完全相同时是重复)
# drop_duolicates(subset=None,keep=frist,inplace=False)方法,keep:保存重复数据的哪一条,frist,last,False(全不保留)
#去除某一列的重复数据(删除指定列中重复数据的整行)
dataframe3=dataframe2.drop_duplicates('语文',inplace=False)#dataframe3=dataframe2['语文'].drop_duplicates(inplace=False)
#print(dataframe3)
#去除多列重复数据(注意:当指定的多列中元素重复时(有完全相同的列),则删除重复列元素的整行)
dataframe4=dataframe2.drop_duplicates(['语文','数学'],inplace=False)
#print(dataframe4)
#去除数据中的所有重复数据(未指定参数,则删除数据中的所有重复元素(两列中所有元素都相同是重复列))
dataframe5=dataframe2.drop_duplicates(inplace=False)
#print(dataframe5)
""" 数据转换 """
#dataframe转换为字典
# to_dict(orient=None)方法
#一列时直接生成字典
#两列或以上,会生成两层字典,对于orient的值不同,分为三种情况
#无参数转换,列名为最外层字典键,其值包含多个内层字典,行(索引)名为内层字典键,该行该列的值是内层字典的值
df1=dataframe2.to_dict()
print(df1)
#参数orient值为list,其仅有一层字典,列名为键,列元素为字典值(一个列表)
df2=dataframe2.to_dict(orient='list')
print(df2)
#参数orient值为index,行(索引)名为最外层字典键,其值包含多个内层字典,列名为内层字典键,该行该列的值是内层字典的值
df3=dataframe2.to_dict(orient='index')
print(df3)
#dataframe转换为列表tolist方法
#dataframe转换为元组,首先通过循环语句按行读取数据,然后使用tuple将其转换为元组
基于vscode运行正常,若有任何不足之处,还请指出,希望大家一起进步!!