python数据框常用操作_python pandas dataframe基本使用整理

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()

运行结果 :

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值