pandas-dataframe

print('创建 DataFrame 数据类型')
    #DataFrame 可以存在多列数据。一般情况下,DataFrame 也更加常用。
    print('/**********通过 NumPy 数组创建 DataFrame*************/')
    dates=pd.date_range('today',periods=6)#定义时间序列作为index
    num_arr=np.random.randn(6,4)#传入numpy随机数组
    columns=['A','B','C','D']#将列表作为列名
    df1=pd.DataFrame(num_arr,index=dates,columns=columns)
    print(df1)
    print('/********** 通过字典数组创建 DataFrame**************/')
    data={'animal':['cat','cat','snake','dog','dog','cat','snake','cat','dog','dog'],
          'age':[2.5,3,1,np.nan,4,3,0.5,np.nan,6,2],
          'visits':[1,3,2,3,2,3,1,1,2,1],
          'priority':['yes','yes','no','yes','no','no','no','yes','no','no']}
    labels=['a','b','c','d','e','f','g','h','i','j']
    df2=pd.DataFrame(data,index=labels)
    print(df2)
    print('/**********查看 DataFrame 的数据类型***********/')
    print(df2.dtypes)
    print('/***********预览 DataFrame 的前 5 行数据*************/')
    print(df2.head())# 默认为显示 5 行,可根据需要在括号中填入希望预览的行数
    print('/**********查看 DataFrame 的后 3 行数据**************/')
    print(df2.tail(3))
    print('/**********查看 DataFrame 的索引******************/')
    print(df2.index)
    print('/**********查看 DataFrame 的列名****************/')
    print(df2.columns)
    print('/********** 查看 DataFrame 的数值**************/')
    print(df2.values)
    print('/*********查看 DataFrame 的统计数据**************/')
    print(df2.describe())
    print('/********* DataFrame 转置操作**************/')
    print(df2.T)
    print('/**********对 DataFrame 进行按列排序*************/')
    print(df2.sort_values(by='age'))
    print('/********** 对 DataFrame 数据切片***************/')
    print(df2[1:3])
    print('/*********对 DataFrame 通过标签查询(单列)*************/')
    print(df2['age'])
    print(df2.age)
    print('/*********对 DataFrame 通过标签查询(多列***************/')
    print(df2[['age','animal']])
    print('/*********对 DataFrame 通过位置查询¶*************/')
    print(df2.iloc[1:3])
    print('/*********DataFrame 副本拷贝¶*************/')
    # 生成 DataFrame 副本,方便数据集被多个不同流程使用
    df3=df2.copy()
    print(df3)
    print('/********* 判断 DataFrame 元素是否为空****************/')
    print(df3.isnull())# 如果为空则返回为 True
    print('/**********添加列数据**************/')
    num=pd.Series([0,1,2,3,4,5,6,7,8,9],index=df3.index)
    df3['No.']=num # 添加以 'No.' 为列名的新数据列
    print(df3)
    print('/**********根据 DataFrame 的下标值进行更改***************/')
    # 修改第 2 行与第 1 列对应的值
    # 索引序号从 0 开始,这里为 1, 0
    df3.iat[1,0]=5
    print(df3)
    print('/**********根据 DataFrame 的标签对数据进行修改****************/')
    df3.loc['f','age']=1.5
    print(df3)
    print('/**********DataFrame 求平均值操作****************/')
    print(df3.mean())
    print('/**********对 DataFrame 中任意列做求和操作****************/')
    print(df3['visits'].sum())
    print('/DataFrame 缺失值操作/')
    print('/***********对缺失值进行填充**************/')
    df4=df3.copy()
    print(df4)
    print(df4.fillna(value=2))
    print('/***********删除存在缺失值的行*************/')
    df5=df3.copy()
    print(df5)
    print(df5.dropna(how='any')) # 任何存在 NaN 的行都将被删除
    print('/***********DataFrame 按指定列对齐***************/')
    left=pd.DataFrame({'key':['foo1','foo2'],'one':[1,2]})
    right=pd.DataFrame({'key':['foo2','foo3'],'two':[4,5]})
    print(left)
    print(right)
    print(pd.merge(left,right,no='key'))# 按照 key 列对齐连接,只存在 foo2 相同,所以最后变成一行
    print('/DataFrame 文件操作/')
    print('/**********CSV 文件写入****************/')
    df3.to_csv('xxx.csv')
    print('/**********CSV 文件读取*************/')
    df_animal=pd.read_csv('xxx.csv')
    print('/**********Excel 写入操作****************/')
    df3.to_excel('xxx.xlsx',sheet_name='Sheet1')
    print('/**********Excel 读取操作¶****************/')
    pd.read_excel('xxx.xlsx','Sheet1',index_col=None,na_values=['NA'])
     print('/DataFrame 多重索引/')
    print('/************根据多重索引创建 DataFrame************/')
    # 创建一个以 letters = ['A', 'B'] 和 numbers = list(range(6))为索引,值为随机数据的多重索引 DataFrame。
    frame=pd.DataFrame(np.arange(12).reshape(6,2),
                       index=[list('AAABBB'),list('123123')],
                       columns=['hello','shiyanlou'])
    print(frame)
    print('/************多重索引设置列名称************/')
    frame.index.names=['first','second']
    print(frame)
    print('/************ DataFrame 多重索引分组求和************/')
    print(frame.groupby('first').sum())
    print('/************DataFrame 行列名称转换**************/')
    print(frame)
    print(frame.stack())
    print('/************DataFrame 索引转换*************/')
    print(frame)
    print(frame.unstack())
    print('/************ DataFrame 条件查找**************/')
    df=pd.DataFrame(data,index=labels)
    print(df)
    #查找 age 大于 3 的全部信息
    print(df[df['age']>3])
    print('/*************根据行列索引切片***********/')
    print(df.iloc[2:4,1:3])
    print('/**************DataFrame 多重条件查询***********/')
    #查找 age<3 且为 cat 的全部数据。
    df=pd.DataFrame(data,index=labels)
    print(df[(df['animal']=='cat')&(df['age']<3)])
    print('/************* DataFrame 按关键字查询************/')
    print(df[df['animal'].isin('cat','dog')])
    print('/**************DataFrame 按标签及列名查询。***********/')
    print(df.loc[df.index[[3,4,8]],['animal','age']])
    print('/**************DataFrame 多条件排序**********/')
    #按照 age 降序,visits 升序排列
    print(df.sort_values(by=['age','visits'],ascending=[False,True]))
    print('/**************DataFrame 多值替换***********/')
    #将 priority 列的 yes 值替换为 True,no 值替换为 False。
    print(df['priority'].map({'yes':True,'no':False}))
    print('/**************DataFrame 分组求和*********/')
    print(df.groupby('animal').sum())
    print('/**************使用列表拼接多个 DataFrame************/')
    temp_df1=pd.DataFrame(np.random.randn(5,4))
    temp_df2=pd.DataFrame(np.random.randn(5,4))
    temp_df3=pd.DataFrame(np.random.randn(5,4))
    print(temp_df1)
    print(temp_df2)
    print(temp_df3)
    pieces=[temp_df1,temp_df2,temp_df3]
    pd.concat(pieces)
    print('/**************找出 DataFrame 表中和最小的列************/')
    df= pd.DataFrame(np.random.randn(size=(5,10)),columns=list('abcdefghij'))
    print(df)
    print(df.sum().idxmin())# idxmax(), idxmin() 为 Series 函数返回最大最小值的索引值
    print('/**************DataFrame 中每个元素减去每一行的平均值*************/')
    df=pd.DataFrame(np.random.randn(size=(5,3)))
    print(df)
    df.sub(df.mean(axis=1),axis=0)
    print('/**************DataFrame 分组,并得到每一组中最大三个数之和************/')
    df=pd.DataFrame({'A':list('aaabbcaabcccbbc'),
                     'B':[12,345,3,1,45,14,4,52,54,23,235,21,57,3,87]})
    print(df)
    print(df.groupby('A')['B'].nlargest(3).sum(level=0))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tskpcp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值