数据类型(类)转换

好久没有自我介绍了。那就再次刷下存在感。本人中山大学,医学生+计科学生的集合体,机器学习爱好者。伴发着脑血管神经性痉挛,本喵还是打起了十二分精神总结了一下数据类型(类)转换。

#!/usr/bin/env python
# -*- coding:utf8 -*-
# @TIME  :2018/11/3 22:59
# @Author:Yolanda
# @File  :temp8.py

#反击啊!少女
import pandas as pd
import numpy as np
import xarray

1、dict to others:dict没有toxxx的用法

print('\n【dict to others】')
data_dict={'A':[4,3,2,1],'B':[5,6,6,8],'C':[9,9,9,12]}
print(data_dict)
# {'B': [5, 6, 6, 8], 'A': [4, 3, 2, 1], 'C': [9, 9, 9, 12]}
print(type(data_dict))
#<class 'dict'>


#Todo:dict转series
data_series1=pd.Series(data_dict)
print(data_series1)
# A     [4, 3, 2, 1]
# B     [5, 6, 6, 8]
# C    [9, 9, 9, 12]
# dtype: object
print(type(data_series1))
# <class 'pandas.core.series.Series'>


#Todo:dict转df
data_DataFrame1=pd.DataFrame(data_dict)
print(data_DataFrame1)
#    A  B   C
# 0  4  5   9
# 1  3  6   9
# 2  2  6   9
# 3  1  8  12
print(type(data_DataFrame1))
# <class 'pandas.core.frame.DataFrame'>


#Todo:dict的key转list
data_list1=list(data_dict)
print(data_list1)
# ['B', 'A', 'C']
print(type(data_list1))
# <class 'numpy.ndarray'>


#Todo:dict的values转list
data_list11=list(data_dict.values())
print(data_list11)
# [[5, 6, 6, 8], [4, 3, 2, 1], [9, 9, 9, 12]]
print(type(data_list11))
# <class 'list'>


#Todo:dict转array
data_array1=np.array(data_dict)
print(data_array1)
# {'B': [5, 6, 6, 8], 'C': [9, 9, 9, 12], 'A': [4, 3, 2, 1]}
print(type(data_array1))
# <class 'numpy.ndarray'>


#Todo:dict转tuple
data_tuple1=tuple(data_dict)
print(data_tuple1)
# ('B', 'A', 'C')
print(type(data_tuple1))
# <class 'tuple'>

2、list to others:list没有toxxx的用法

print('\n【list to others】')
data_list=[[4,3,2,1],[5,6,6,8],[9,9,9,12]]
print(data_list)
# [[4, 3, 2, 1], [5, 6, 6, 8], [9, 9, 9, 12]]
print(type(data_list))
# <class 'list'>


#Todo:list转series
data_series2=pd.Series(data_list,index=['a','b','c'])
print(data_series2)
# a     [4, 3, 2, 1]
# b     [5, 6, 6, 8]
# c    [9, 9, 9, 12]
# dtype: object
print(type(data_series2))
# <class 'pandas.core.series.Series'>


#Todo:list转df
data_DataFrame2=pd.DataFrame(data_list,index=['a','b','c'],columns=['A','B','C','D'])
print(data_DataFrame2)
#    A  B  C   D
# a  4  3  2   1
# b  5  6  6   8
# c  9  9  9  12
print(type(data_DataFrame2))
# <class 'pandas.core.frame.DataFrame'>


#Todo:list转dict
list2=[1,2,3]#用data_list2报错
index=['a','b','c']
data_dict2=dict(zip(list2,index))
print(data_dict2)
# {1: 'a', 2: 'b', 3: 'c'}
print(type(data_dict2))
# <class 'dict'>


#Todo:list转array
data_array2=np.array(data_list)
print(data_array2)
#    A  B  C   D
# a  4  3  2   1
# b  5  6  6   8
# c  9  9  9  12
print(type(data_array2))
# <class 'pandas.core.frame.DataFrame'>


#Todo:list转tuple
data_tuple2=tuple(data_list)
print(data_tuple2)
# ([4, 3, 2, 1], [5, 6, 6, 8], [9, 9, 9, 12])
print(type(data_tuple2))
# <class 'tuple'>

3、df to others:df有to_xarray()多维数组,to_dict(),to_string用法

print('\n【df to others】')
data_df=pd.DataFrame({'A':[4,3,2,1],'B':[5,6,6,8],'C':[9,9,9,12]})
print(data_df)
#    A  B   C
# 0  4  5   9
# 1  3  6   9
# 2  2  6   9
# 3  1  8  12
print(type(data_df))
# <class 'pandas.core.frame.DataFrame'>


#Todo:df转series
data_series3=pd.Series(data_df['A'])#等价于data_df['A']
#df是由多个series组成的,一列就是一个series,所以df只能拆成多个series,所以要指定列。
# data_series3=pd.Series(data_df)就是错的
print(data_series3)
# 0    4
# 1    3
# 2    2
# 3    1
# Name: A, dtype: int64
print(type(data_series3))
# <class 'pandas.core.series.Series'>


#Todo:df转list
data_list3=list(data_df)
print(data_list3)
# ['A', 'B', 'C']
print(type(data_list3))
#<class 'list'>


#Todo:df转dict
data_dict3=dict(data_df)
print(data_dict3)
# {'A':
# 0    4
# 1    3
# 2    2
# 3    1
# Name: A, dtype: int64,
# 'B':
# 0    5
# 1    6
# 2    6
# 3    8
# Name: B, dtype: int64,
# 'C':
# 0     9
# 1     9
# 2     9
# 3    12
# Name: C, dtype: int64}
print(type(data_dict3))
#<class 'dict'>


#Todo:df转dict
data_dict31=data_df.to_dict()
print(data_dict31)
# {'A': {0: 4, 1: 3, 2: 2, 3: 1}, 'B': {0: 5, 1: 6, 2: 6, 3: 8}, 'C': {0: 9, 1: 9, 2: 9, 3: 12}}
print(type(data_dict3))
# <class 'dict'>


#Todo:df转array
data_array3=np.array(data_df)
print(data_array3)
# [[ 4  5  9]
#  [ 3  6  9]
#  [ 2  6  9]
#  [ 1  8 12]]
print(type(data_array3))
# <class 'numpy.ndarray'>


#Todo:df转array
data_array31=data_df.as_matrix()
print(data_array31)
# [[ 4  5  9]
#  [ 3  6  9]
#  [ 2  6  9]
#  [ 1  8 12]]
print(type(data_array31))
# <class 'numpy.ndarray'>


#Todo:df某一列转array
data_array32=data_df.as_matrix(['C'])
print(data_array32)
# [[ 9]
#  [ 9]
#  [ 9]
#  [12]]
print(type(data_array32))
# <class 'numpy.ndarray'>


#Todo:df转array
data_array33=data_df.values
print(data_array33)
# [[ 4  5  9]
#  [ 3  6  9]
#  [ 2  6  9]
#  [ 1  8 12]]
print(type(data_array33))
# <class 'numpy.ndarray'>


#Todo:df转tuple
data_tuple3=tuple(data_df)
print(data_tuple3)
# ('A', 'B', 'C')
print(type(data_tuple3))
# <class 'tuple'>


#Todo:df转xarray
print(data_df.to_xarray())
# <xarray.Dataset>
# Dimensions:  (index: 4)
# Coordinates:
#   * index    (index) int64 0 1 2 3
# Data variables:
#     A        (index) int64 4 3 2 1
#     B        (index) int64 5 6 6 8
#     C        (index) int64 9 9 9 12


#Todo:df转string
print(data_df.to_string)
# <bound method DataFrame.to_string of    A  B   C
# 0  4  5   9
# 1  3  6   9
# 2  2  6   9
# 3  1  8  12>

4、series to others:series有to_xarray()多维数组,to_dict(),to_list(),to_string用法

print('\n【series to others】')
data_series=pd.Series([[4,3,2,1],[5,6,6,8],[9,9,9,12]],index=['a','b','c'])
print(data_series)
# a     [4, 3, 2, 1]
# b     [5, 6, 6, 8]
# c    [9, 9, 9, 12]
# dtype: object
print(type(data_series))
# <class 'pandas.core.series.Series'>


#Todo:series转df
data_df4=pd.DataFrame(data_series)
print(data_df4)
#                0
# a   [4, 3, 2, 1]
# b   [5, 6, 6, 8]
# c  [9, 9, 9, 12]
print(type(data_df4))
# <class 'pandas.core.frame.DataFrame'>


#Todo:series转list
data_list4=list(data_series)
print(data_list4)
# [[4, 3, 2, 1], [5, 6, 6, 8], [9, 9, 9, 12]]
print(type(data_list4))
#<class 'list'>


#Todo:series转list
data_list41=data_series.tolist()
print(data_list41)
# [[4, 3, 2, 1], [5, 6, 6, 8], [9, 9, 9, 12]]
print(type(data_list41))
#<class 'list'>


#Todo:series转dict
data_dict4=dict(data_series)
print(data_dict4)
# {'a': [4, 3, 2, 1], 'c': [9, 9, 9, 12], 'b': [5, 6, 6, 8]}
print(type(data_dict4))
# <class 'dict'>


data_dict41=data_series.to_dict()
print(data_dict41)
# {'a': [4, 3, 2, 1], 'c': [9, 9, 9, 12], 'b': [5, 6, 6, 8]}
print(type(data_dict41))
# <class 'dict'>


#Todo:series转array
data_array4=np.array(data_series)
print(data_array4)
# [list([4, 3, 2, 1]) list([5, 6, 6, 8]) list([9, 9, 9, 12])]
print(type(data_array4))
# <class 'numpy.ndarray'>


data_array41=data_series.as_matrix()
print(data_array41)
# [list([4, 3, 2, 1]) list([5, 6, 6, 8]) list([9, 9, 9, 12])]
print(type(data_array41))
# <class 'numpy.ndarray'>


#Todo:series转tuple
data_tuple4=tuple(data_series)
print(data_tuple4)
# ([4, 3, 2, 1], [5, 6, 6, 8], [9, 9, 9, 12])
print(type(data_tuple4))
# <class 'tuple'>


#Todo:series转string
print(data_series.to_string())
# <class 'tuple'>
# a     [4, 3, 2, 1]
# b     [5, 6, 6, 8]
# c    [9, 9, 9, 12]
# <xarray.DataArray (index: 3)>


#Todo:series转xarray
print(data_series.to_xarray())
# <xarray.DataArray (index: 3)>
# array([list([4, 3, 2, 1]), list([5, 6, 6, 8]), list([9, 9, 9, 12])],
#       dtype=object)
# Coordinates:
#   * index    (index) object 'a' 'b' 'c'

5、array to others:array有tolist()、tostring()用法

print('\n【array to others】')
data_array=np.array([[4,3,2,1],[5,6,6,8],[9,9,9,12]])
print(data_array)
# [[ 4  3  2  1]
#  [ 5  6  6  8]
#  [ 9  9  9 12]]
print(data_array.shape)#(3, 4)
print(type(data_array))
# <class 'numpy.ndarray'>
print(type(data_array.shape))
#<class 'tuple'>


#Todo:array转series.报错
data_series5=pd.Series(data_array,index=['a','b','c'])#报错
#series只能有一列,所以需要把此array先转成df再取其中某列
print(data_series5)
# a     [4, 3, 2, 1]
# b     [5, 6, 6, 8]
# c    [9, 9, 9, 12]
# dtype: object
print(type(data_series5))
# <class 'pandas.core.series.Series'>


#Todo:array转series
data_array0=np.random.randn(3)
data_series51=pd.Series(data_array0,index=['a','b','c'])#series只能有一列,所以一维的array才可以转
print(data_series51)
# a    2.047569
# b   -0.204963
# c   -0.836421
# dtype: float64
print(type(data_series51))
# <class 'pandas.core.series.Series'>


#Todo:array转df
data_df5=pd.DataFrame(data_array,index=['a','b','c'],columns=['A','B','C','D'])
print(data_df5)
#    A  B  C   D
# a  4  3  2   1
# b  5  6  6   8
# c  9  9  9  12
print(type(data_df5))
# <class 'pandas.core.frame.DataFrame'>


#Todo:array转dict.报错
data_dict5=dict(data_array)#报错
#array需要先转成series再转成dict,因为dict有key和values,会把series的索引当成key。
# 但是series只能存一列。所以array转成df,再转成dict。但是转成df再转成dict会变成下面这样
# {'A': {'c': 9, 'b': 5, 'a': 4}, 'D': {'c': 12, 'b': 8, 'a': 1}, 'C': {'c': 9, 'b': 6, 'a': 2}, 'B': {'c': 9, 'b': 6, 'a': 3}}
# 想变成{'A':[4,3,2,1],'B':[5,6,6,8],'C':[9,9,9,12]}需要for循环手动
print(data_dict5)
print(type(data_dict5))


#Todo:array转list
data_list5=list(data_array)
print(data_list5)
# [array([4, 3, 2, 1]), array([5, 6, 6, 8]), array([ 9,  9,  9, 12])]
print(type(data_list5))
# <class 'list'>


data_list51=data_array.tolist()
print(data_list51)
# [[4, 3, 2, 1], [5, 6, 6, 8], [9, 9, 9, 12]]
print(type(data_list51))
# <class 'list'>


#Todo:array转tuple
data_tuple5=tuple(data_array)
print(data_tuple5)
# ([4, 3, 2, 1], [5, 6, 6, 8], [9, 9, 9, 12])
print(type(data_tuple5))
# <class 'tuple'>


#Todo:array转string
print(data_array.tostring().decode('utf8'))
#打印乱码

6\tuple to others:tuple没有toxxx用法

print('\n【tuple to others】')
data_tuple=tuple([[4,3,2,1],[5,6,6,8],[9,9,9,12]])#tuple和list类似,只是tuple不能修改内容,list可以。比如把其中的1换成2.
print(data_tuple)
# ([4, 3, 2, 1], [5, 6, 6, 8], [9, 9, 9, 12])
print(type(data_tuple))
# <class 'tuple'>


#Todo:tuple转series
data_series6=pd.Series(data_tuple,index=['a','b','c'])
print(data_series6)
# a     [4, 3, 2, 1]
# b     [5, 6, 6, 8]
# c    [9, 9, 9, 12]
# dtype: object
print(type(data_series6))
# <class 'pandas.core.series.Series'>


#Todo:tuple转df.报错
data_df6=pd.DataFrame(data_tuple,index=['a','b','c'],columns=['A','B','C','D'])
print(data_df6)
print(type(data_df6))


#Todo:tuple转dict.报错
data_dict6=dict(data_tuple)
print(data_dict6)
print(type(data_dict6))


#Todo:tuple转list
data_list6=list(data_tuple)
print(data_list6)
# [[4, 3, 2, 1], [5, 6, 6, 8], [9, 9, 9, 12]]
print(type(data_list6))
# <class 'list'>


#Todo:tuple转array
data_array6=np.array(data_tuple)
print(data_array6)
# [[ 4  3  2  1]
#  [ 5  6  6  8]
#  [ 9  9  9 12]]
print(type(data_array6))
# <class 'numpy.ndarray'>

7、总结
df有to_xarray()多维数组,to_dict(),to_string用法
series有to_xarray()多维数组,to_dict(),to_list(),to_string用法
array to others:array有tolist()、tostring()用法

np.array()
list()
pd.DataFrame()
pd.Series()
dict()
tuple()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值