dataframe是一种表格型的数据存储结构,可以看作是几个serie的集合。dataframe既有行索引,也有列索引。
以下代码环境为google colab/jupyter notebook。
接下来就对dataframe的基本使用进行整理。
dataframe也从属于pandas模块,因此还是老规矩,先import pandas。
import pandas as pd
import numpy as np
1. dataframe的创建
dataframe的创建有很多方法,下面列举了几种主要的创建方法。
a. 通过numpy ndarray创建dataframe
在创建dataframe时,可以自定义行索引index和列索引columns。
arr = np.random.randn(6,4)
index_rows = pd.date_range('today', periods=6)
index_columns = ['A','B','C','D']
dataframe1 =
pd.DataFrame(arr,index=index_rows,columns=index_columns)
dataframe1
运行结果:
b. 通过字典dictionary创建dataframe
data = {'country': ['China','Japan','France'],'capital': ['Beijing','Tokyo','Paris'],'population' : [1400000000, 16000000, 60000000]}
index = np.array([1,2,3])
dataframe2 = pd.DataFrame(data,index=index)
dataframe2
# 字典中每个键对应每一列的列标
运行结果:
2.dataframe的基本操作
a.使用head/tail取dataframe中前n行或后n行
dataframe2.head(2) #使用head取dataframe中的前n行
运行结果 :
dataframe2.tail(2) #使用tail取dataframe中的后n行
运行结果:
b. 获取dataframe的统计学属性
dataframe2.describe()
运行结果 :
c. 翻转dataframe的行与列
dataframe2.T
运行结果 :
d. 排序
dataframe2.sort_values(by='population') # 升序排列 对一整行都进行移动变换
运行结果 :
e. 切片
dataframe2[0:2] # [0,2)包括前不包括后,例子中就是输出第0行和第1行
运行结果 :
f. 通过列名tag查询
dataframe2[['country','population']] #只显示country和population两列,如果想要存储在另外一个dataframe中只需要用赋值语句
运行结果 :
g. 备份dataframe
使用dataframe的copy方法对dataframe进行备份。使用copy方法的好处是,两个dataframe是完全分开的,改变其中一个的任何属性都不会对另外一个dataframe造成影响。而如果使用赋值语句进行备份,两个dataframe实际是完全相连的,任意改变其中一个dataframe的属性都会对两者进行同时改变。
例如在下面的例子中,我们使用copy方法,备份dataframe2在dataframe3中并改变dataframe3的行索引,我们会发现dataframe2没有因此和dataframe3同步变化。
dataframe3 = dataframe2.copy()
dataframe3.index = ['a','b','c']
print(dataframe2)
print(dataframe3)
运行结果:
使用赋值语句进行备份,两个dataframe会进行同步变化。
例如这里我们使用赋值语句后,改变dataframe3的行索引,dataframe2的行索引也同步改变了。
dataframe3 = dataframe2
dataframe3.index = ['a','b','c']
print(dataframe2)
运行结果 :
h.使用loc对指定位置的数值进行操作
dataframe3.loc['c','population'] = np.nan #可以对指定位置的数值进行操作
dataframe3
运行结果 :
i. 对dataframe中未定义的值进行操作
df4.fillna(500000) # 给所有未定义的数值赋值
运行结果 :
df5 = dataframe3.copy()
df5.dropna(how='any') # 删除有nan未定义数值的一行
运行结果 :
df5 = dataframe3.copy().T # 如果我们transpose翻转这个dataframe 就会将population这一行整个删去
df5.dropna(how='any')
运行结果 :
3. dataframe的文件操作
dataframe可以对csv文件,xlsx文件,txt等文件进行读写操作。
dataframe3.to_csv('country_count.csv') # 将dataframe写入csv文件
# 可以在括号中使用绝对路径调整文件生成的位置 默认位置为当前文件夹下生成
df_country = pd.read_csv('country_count.csv',index_col=None) # 读取csv文件
dataframe3.to_excel('country_count.xlsx',sheet_name='sheet1')# 将dataframe写入excel表格
dataframe_fromexcel = pd.read_excel('country_count.xlsx',sheet_name='sheet1',index_col=None)# 读取excel表格
4. dataframe的可视化
%matplotlib inline
df = pd.DataFrame(np.random.randn(50,4),index=pd.date_range('today',periods=50),columns=['A','B','C','D'])
df.cumsum()
df.plot()
运行结果 :