# 将用pandas建立的表(DataFrame)保存成excel或csv格式:
import pandas as pd
df = pd.DataFrame() # 创建一个dataframe类(空表),并将其赋值给df
df.to_excel('excel.xlsx') # 将df以excel的格式保存于excel.xlsx中
# 如果想要保存成csv的话:df.to_csv('xxx.csv')
# 在pandas里面,DataFrame译为数据帧,相当于excel里面的worksheet(一个表):
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
# data : 可以是python的字典、列表、numpy的数组或DataFrame
# index : 如果没有设置为哪一列的话,默认为0, 1, 2, 3, ...
# columns : 列名,一般以列表的形式传入
# dtype : 数据类型(没太用)
# copy : (没太用)
# DataFrame输入参数事例:
# 以字典的形式输入
# 输出结果(字典)df = pd.DataFrame({'ID':[0,1,2,3], 'name':['chan','li','long','huang'], 'age':[21,24,23,19]})
print(df)
# 多出的第一列为pandas默认的index,如想去除第一列,可把index设为“ID”,即ID为此表的index:
# 输出结果(去掉默认的index)df = pd.DataFrame({'ID':[0,1,2,3], 'name':['chan','li','long','huang'], 'age':[21,24,23,19]})
df = df.set_index('ID') # 返回一个新的DataFrame,然后将新的DataFrame赋给df,用以覆盖掉之前的df
print(df)
# 细心的朋友会注意到上面传入数据的时候,顺序依次是ID、name、age,但是输出的时候却顺序乱了,这个原因主要是因为python里面的字典是无序的,如果想让输出的顺序跟输入时的顺序一样的话,只需引入 columns=['ID', 'name', 'age'] 来限定顺序即可:
# 加columns参数输出结果df = pd.DataFrame({'ID':[0,1,2,3], 'name':['chan','li','long','huang'], 'age':[21,24,23,19]}, columns=['ID', 'name', 'age'])
print(df)
# 以列表的形式输入
# 输出结果(列表)df = pd.DataFrame([[0,1,2,3], ['chan','li','long','huang'], [21,24,23,19]])
print(df)
# 可见以字典形式导进去的数据跟列表形式导进去的数据,他们的行列刚好相反,且以列表形式导进的数据,自动生成了列名以及index。那么如何让这次输出结果变成跟上次输出结果一样呢:
# 更改行名# 先把行名命名好,再旋转
df.index=['ID', 'name', 'age']
print(df)
# 输出结果# DataFrame有两个函数分别为:stack()和unstack(),unstack()是stack()的你操作,这里只讨论unstack()
# 当有列索引时,unstack()把列索引转换到最外层行索引;当没有列索引是,unstack()把最内层行索引转换成列索引。因此对一个DataFrame做两次unstack()操作即可实现行列转换。
df = df.unstack().unstack() # 返回一个新的dataframe,然后赋值给df,用以覆盖之前的df
print(df)
# 如果想要去第一列的话,可以用上面介绍的方法,即:
#输出结果df = df.set_index('ID') # 返回一个新的DataFrame,然后将新的DataFrame赋给df,用以覆盖掉之前的df
print(df)
# 以numpy数组形式输入
#以numpy数组格式导入数据的输出结果import numpy as np
arr = np.arange(15).reshape(3,5) # 生成0-14一共15个数,并且格式化为3行5列
df = pd.DataFrame(arr)
print(arr)
print('=====================')
print(df)
# 可见,numpy导入的格式跟python的list导入的个数的到的结果是相似的。
# 以DataFrame格式导入
# 输出结果df1 = pd.DataFrame(df)
print(df1)
# 相当于返回一个新的一样的表。
(更新中。。。)
网友评论