Pandas Tutorials – DataFrame/Series与常见数据结构相互转换

DataFrame to Series

将整个DataFrame转换为Series是不合理的, 因为DataFrame中含有多个列.
正常操作是从DataFrame中选择一列, 这样会自动生成一个Series.

df = pd.DataFrame().from_dict(data={'a':[1,2,3],'b':[4,5,6]}) # df : DataFrame
se = df['a'] # se : Series

Series to DataFrame

se = pd.Series(data = np.arange(start=1,stop=11,step=1))
se_df = se.to_frame(name='rand')

通过Series.to_frame方法转换为DataFrame, 索引不变. 如果不传入name参数, 则默认转换的列名为0(需确认?); 否则,将列名设为name参数传入的值.

DataFrame to List

首先使用np.array()函数把DataFrame转化为np.ndarray(),再利用tolist()函数把np.ndarray()转为list,示例代码如下:

import numpy as np
import pandas as pd

data_x = pd.read_csv("E:/Tianchi/result/features.csv",usecols=[2,3,4])#pd.dataframe
data_y =  pd.read_csv("E:/Tianchi/result/features.csv",usecols=[5])

train_data = np.array(data_x)#np.ndarray()
train_x_list=train_data.tolist()#list
print(train_x_list)
print(type(train_x_list))

List 转 DataFrame

DataFrame 转 Dict

Dict 转 DataFrame

假设存在字典d, 需要将其转换为pd.DataFame.

> d= {u'2012-06-08': 388, u'2012-06-09': 388, u'2012-06-10': 388, u'2012-06-11': 389}
  1. 通过from_dict进行构建.
> d_df = pd.DataFrame().from_dict(d,orient='index').reset_index()
        index    0
0  2012-06-08  388
1  2012-06-09  388
2  2012-06-10  388
3  2012-06-11  389

这样生成的DataFramecolumns分别为index0, 不太方便理解和使用. 可以通过DataFrame.rename()来对columns进行重命名.

> d_df.rename(columns={'index': 'Date', 0: 'Count'},inplace=True)
         Date  Count
0  2012-06-08    388
1  2012-06-09    388
2  2012-06-10    388
3  2012-06-11    389
  1. 通过传递list键值对, 初始化DataFrame.
>>> d_df = pd.DataFrame(data=list(d.items()),index=[5,6,7,8],columns=['Date','Count'],dtype=np.int32,copy=False)
>>> d_df
         Date  Count
5  2012-06-08    388
6  2012-06-09    388
7  2012-06-10    388
8  2012-06-11    389

copy只对其他DataFrame或其他2-D格式的数据起作用. 默认为False.

  1. 可以通过构建Seriesreset_index转为DataFrame. 不过这种方法不直接, 不建议使用.
> s = pd.Series(d, name='DateValue')
> s.index.name = 'Date'
# 这里不可以使用inplace=True来重置index, 
# 会抛出TypeError: Cannot reset_index inplace on a Series to create a DataFrame
> d_df = s.reset_index()

通过d构建Series, 后设置index.name, 最后通过reset_indexSeries s转换为DataFrame d_df.

DataFrame 转 Numpy.array

np_arr = df.values

Numpy.array 转 DataFrame

df = pd.DataFrame(np_arr)

CS231n – 0. 课程简介

斯坦福CS231n深度学习与计算机视觉

Numpy Tutorial – 初始化数组/矩阵

import numpy as np

# 创建数值全部为0的,长度为10的数组
np.zeros(10,dtype=int)

# 创建数值全为1, shape为3x5的浮点型数组
np.ones((3,5),dtype=float)

# 创建数值全为3.14, shape为3x5的浮点型数组
np.full((3,5),3.14)

# 创建数值是一个线性序列,从0开始,到20结束,步长为2, shape为3x5的数组
np.arange(0,20, 2)

# 创建包含5个元素的数组,5个元素均匀的分布在0~1
np.linsapace(0, 1, 5)

# 创建shape为3x3,在0~1均匀分配的随机数组成的数组
np.random.random(3,3))

# 创建shape为3x3,均值为0,方差为1,正太分布的随即数数组
np.random.normal(0,1,(3,3))

# 创建shape为3x3,[0,10]区间的随机整形数组
np.random.randint(0,10,(3,3))

# 创建shape为3x3的单位矩阵
np.eye(3)12

# 创建一个由3个整形数组组成的未初始化的数组,数组的值是内存空间中的任意值
np.empty(3)

Matplotlib Tutorials :

#导入numpy和matplotlib库
>>> import numpy as np
>>> import matplotlib.pyplot as plt
#生成x轴刻度
>>> x=np.arange(6)
#生成y轴的值
>>> y=np.random.randint(0,10,6)
>>> print(x)
[0 1 2 3 4 5]
>>> print(y)
[3 8 3 4 8 3]
#创建一个figure画图对象
>>> plt.figure()
#用subplot方法绘制子图
>>> plt.subplot(121) # subplot方法中有3个int参数,分别代表1行,2列,最后一个1代表正在绘制第1个子图
>>> plt.bar(x,y,width=0.5,color=['r','g','b']) # color参数传入颜色列表,可以在一幅图中显示不同颜色
>>> plt.subplot(122) # 括号中最后一个1代表正在绘制第2个子图
>>> plt.bar(x,y,0.5,color=['r','g','b'],alpha=0.5)
>>> plt.show()

TensorFlow Tutorial : 文本补齐功能 pad_sequences

Function pad_sequences

From keras.preprocessing.sequence.pad_sequences

Parmas pad_sequences(sequences, maxlen=None, dtype=’int32’, padding=’pre’, truncating=’pre’, value=0.)

函数说明
将长为nb_samples的sequences转化为形如(nb_samples,nb_timesteps) 2D numpy array.
如果提供了参数maxlen, 则nb_timesteps最大值设为maxlen, 否则其值为最长序列的长度.
其他短于该长度的序列都会用0进行填充以达到maxlen.
长于nb_timesteps的序列将会被截断, 以使其匹配目标长度.
padding和截断发生的位置分别取决于参数padding和truncating.

参数说明
sequences : 浮点数或整数构成的两层嵌套列表.
maxlen : None或整数, 为序列的最大长度.
dtype : 返回的 numpy array的数据类型
padding : ‘pre’或‘post’,确定当需要补0时,在序列的起始还是结尾补
truncating : ‘pre’或‘post’,确定当需要截断序列时,从起始还是结尾截断
value : 浮点数,此值将在填充时代替默认的填充值0进行填充.

返回值
返回形如(nb_samples,nb_timesteps)的2D张量


import tensorflow as tf