python中numpy 的array矩阵,列表与pandas中的dataframe互相转换

import pandas as pd
import numpy
banji=['三年级11班', '三年级12班', '三年级13班', '三年级14班', '三年级1班', '三年级3班', '三年级4班', '三年级5班', '三年级6班(2020届理科6班)', '三年级7班', '三年级8班', '三年级9班', '二年级10班', '二年级11班', '二年级12班', '二年级13班', '二年级14班', '二年级15班', '二年级1班', '二年级24班(测试)', '二年级2班', '二年级3班', '二年级4班', '二年级5班', '二年级6班', '二年级7班', '二年级8班', '二年级9班', '宋基文复(1)班', '宋基理复(1)班', '宋基理复(2)班', '宋基高一文(1)班', '宋基高一文(2)班', '宋基高一理(1)班', '宋基高一理(2)班', '宋基高二文(1)班', '宋基高二理(1)班', '宋基高二理(2)班', '校部高一年级1班', '校部高一年级2班', '校部高一年级3班', '校部高一年级4班', '校部高一年级5班', '校部高一年级6班', '校部高一年级7班', '校部高一年级8班', '校部高一年级文1班', '校部高一年级文2班', '校部高一年级文3班', '校部高一年级文4班', '高一(新校)10班', '高一(新校)11班', '高一(新校)12班(文)', '高一(新校)1班', '高一(新校)2班(文)', '高一(新校)3班', '高一(新校)4班(文)', '高一(新校)5班', '高一(新校)6班', '高一(新校)7班', '高一(新校)8班', '高一(新校)9班(文)', '高三文1', '高三文2班', '高三文3', '高三文4', '高三文5', '高三文6', '高三文7', '高三文8', '高三理2班', '高三理科10班', '高二文1', '高二文2', '高二文3', '高二文4', '高二文5', '高二文6', '高二文7', '高二文8班']
bannum=[72, 71, 73, 75, 50, 46, 69, 73, 75, 73, 76, 76, 75, 75, 71, 73, 72, 77, 30, 2, 30, 73, 74, 71, 41, 71, 74, 70, 40, 45, 46, 55, 52, 53, 55, 66, 47, 46, 45, 44, 63, 64, 63, 60, 60, 60, 50, 49, 50, 54, 69, 65, 58, 63, 52, 67, 52, 65, 85, 51, 60, 62, 60, 60, 67, 67, 70, 68, 69, 66, 66, 77, 79, 89, 127, 125, 122, 118, 156, 77]


#列表转化为array矩阵
arr1=numpy.array(banji)                            #1行1列
arr2=numpy.array(bannum)                           #1行1列 可用.T转置

print(arr1,"#"*50,"\n",arr2)

#数组纵向合并
print('纵向方法1',numpy.vstack((arr1,arr2)))       #1行2列
print("*"*50)
print('纵向方法2',numpy.r_[arr1,arr2])             #1行1列

#数组横向合并
print("-"*50)
print('横向方法1',numpy.hstack((arr1,arr2)))       #1行1列
print("*"*50)
print('横向方法2',numpy.c_[arr1,arr2])             #1行,内部2个列表


arr=numpy.c_[arr1,arr2]

print("-"*50,"dataframe")
#arr矩阵转为dataframe
bframe=pd.DataFrame(arr)
print(bframe)

#dataframe转为arr矩阵
brrnumpy=bframe.to_numpy()
print("-"*50,"numpy矩阵")
print(brrnumpy)

brr=bframe.values
print("-"*50,"直接读dataframe值")
print(brr)


#dataframe取某列转为是series,list
banji_ser=bframe[0]                            # dataframe  0    1
                                                # 0   三年级11班   72
                                                # 1   三年级12班   71
                                                # 2   三年级13班   73
num_ser=bframe[1]


# series 转换为list
banji_list=banji_ser.tolist()
print("-"*50,"\n  班级列表")
print(banji_list)


num_list1=bframe[1].values.tolist()   #bframe['a']
print('Frame --》list',num_list1)

num_list2=bframe[1].tolist()
print('Frame --》list',num_list2)


num_list3=bframe[1].drop_duplicates().values.tolist()
print('去重Frame --》list',num_list3)

num_list4=list(set(bframe[1])) # 数字
print('去重Frame --》list',num_list4)

# 转换整个到list 
num_list5= bframe.values.tolist()
print('整体Frame --》list',num_list5)

#arr转为list  
arr_list=arr.tolist()
print("-"*50,"\n  班级列表")
print(arr_list)

#多行多列的arr先分割再转化
arr1=numpy.hsplit(arr,2)[0]                     #三年级11班   72 平均分两列 为[0] [1] 如果分割大于内容数,出错
arr_list1=arr1.tolist()
print("-"*50,"\n  水平分割班级列表")
print(arr_list1)

#在垂直方向分割成三行
arr2=numpy.vsplit(arr,2)[0]                     #不能平均分割时也出错
arr_list2=arr2.tolist()
print("-"*50,"\n  垂真分割班级列表")
print(arr_list2)



#list转字符串
str_arr=" ".join(banji_list)                      #不能转化多列的,只能转化一列的[[11],[12]]也不行
print("-"*50,"\n  班级字符串")                     #如转换arr_list1错,arrlist2出错,由dataframe转出的单列可以
print(str_arr)

#字符串转list
str_list=str_arr.split()
print("-"*50,"\n  班级列表")
print(str_list)

#list转series
ser1=pd.Series(banji_list)
print(ser1)
ser2=pd.Series(banji_list,index=range(len(banji_list)))
print(ser2)

#字典转为DataFrame
pd.DataFrame({'数目':999},index=[0])
#字典放在list再转为DataFrame
pd.DataFrame([{'数目1':999},{'数目2':888}])

#list列表不能直接转为DataFrame,先转为字典,再字典转为DataFrame
dict_c={"班级":banji,
		"人数":bannum}
print(pd.DataFrame(dict_c))


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值