pandas中DataFrame的常用操作

1. DataFrame的创建

(1)手动创建

df = pd.DataFrame({'a':[1,2,3],'b':[1,2,3]})
print(df)

结果为:

   a  b
0  1  1
1  2  2
2  3  3

(2)用panda导入文件数据

例如导入.csv类型的文件,导入之后直接变成了DataFrame类型的数据

df = pd.read_csv('/file_path/file_name.csv')

2. DataFrame获取行数和列数

(1)获取行数

df.shape[0]

(2)获取列数

df.shape[1]

3. DataFrame类型数据的提取

因为DataFrame类型的数据通常量比较大,所以经常会提取前几行,后几行或者某一列,某一行。

(1)提取前5行

df.head(5)

(2)提取后5行

df.tail(5)

(3)提取某一列

df['列名'].values

注:如果列名是数字也要加上单引号
(4)提取行

df.iloc[2]  # 取第二行
df.iloc[5:10]  # 取第五行到第十行

4. 修改Dataframe列名(行名)的两种方法

(1)修改列名:

首先新建一个Dataframe
import pandas as pd
df = pd.DataFrame({'a':[1,2,3],'b':[1,2,3]})
如下:
   a  b
0  1  1
1  2  2
2  3  3

1、修改列名a,b为A、B。
df.columns = ['A','B']
2、只修改列名a为A,inplace=Ture,修改原数据
df.rename(columns={'a':'A'}, inplace=True)

(2)修改行名

首先新建一个Dataframe
import pandas as pd
df = pd.DataFrame({'a':[1,2,3],'b':[1,2,3]})
如下:
   a  b
0  1  1
1  2  2
2  3  3

1、修改行名0,1,2为A、B、C。
df.index = ['A','B','C']
2、只修改行名0为A,inplace=Ture,修改原数据
df.rename(index={0:'A'}, inplace=True)

5.将array和DataFrame的相互转换

(1)array转换为DataFrame

df = pd.DataFrame(array_data)

(2)DataFrame转换为array

# 方法一:
data_array = np.array(df)
# 方法二:
data_array = df.as_matrix()
# 方法三:
data_array = df.values

6.DataFrame的转置

df_T = df.T

例子:

import pandas as pd
df = pd.DataFrame({'a':[1,2,3],'b':[1,2,3]})
print(df)

结果:

   a  b
0  1  1
1  2  2
2  3  3

接着:

df_T = df.T
print(df_T)

结果:

   0  1  2
a  1  2  3
b  1  2  3

7.DataFrame删除指定的某行或者某列

(1)函数

DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)

(2)参数含义

∙ \bullet labels:要删除的行或列,用列表给出
∙ \bullet axis:默认为0,指要删除的是行,删除列时需指定axis为1
∙ \bullet index :直接指定要删除的行,删除多行可以使用列表作为参数
∙ \bullet columns:直接指定要删除的列,删除多列可以使用列表作为参数
∙ \bullet inplace: 默认为False,该删除操作不改变原数据;inplace = True时,改变原数据

(3)删除行或列的两种方式:

①通过参数labels和axis 来指定
②通过参数index或者columns来指定

(4)例子

①删除列

∙ \bullet 通过labels参数和axis参数指定

在这里插入图片描述
∙ \bullet 通过columns参数指定

在这里插入图片描述

②删除行

∙ \bullet 通过labels和axis = 0来指定

在这里插入图片描述
∙ \bullet 通过index参数直接指定

在这里插入图片描述

8.更改DataFrame的某些值

(1)更改DataFrame中的数据,原理是将这部分数据提取出来,重新赋值为新的数据。

(2)需要注意的是,数据更改直接针对DataFrame原数据更改,操作无法撤销,如果做出更改,需要对更改条件做确认或对数据进行备份

import pandas as pd
df1 = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], columns=['name','gender','age'])

print("--------更换单个值----------")
# loc和iloc 可以更换单行、单列、多行、多列的值
df1.loc[0,'age']=25      # 思路:先用loc找到要更改的值,再用赋值(=)的方法实现更换值
df1.iloc[0,2]=25         # iloc:用索引位置来查找

# at 、iat只能更换单个值
df1.at[0,'age']=25      # iat 用来取某个单值,参数只能用数字索引
df1.iat[0,2]=25         # at 用来取某个单值,参数只能用index和columns索引名称
print(df1)

在这里插入图片描述

9.插入新增列、行

import pandas as pd

df1 = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], columns=['name','gender','age'])

print("----------在最后新增一列---------------")
print("-------案例1----------")
# 在数据框最后加上score一列,元素值分别为:80,98,67,90
df1['score']=[80,98,67,90]   # 增加列的元素个数要跟原数据列的个数一样
print(df1)

print("-------案例2----------")
print("---------在指定位置新增列:用insert()--------")
# 在gender后面加一列城市
# 在具体某个位置插入一列可以用insert的方法
# 语法格式:列表.insert(index, obj)
# index --->对象 obj 需要插入的索引位置。
# obj ---> 要插入列表中的对象(列名)

col_name=df1.columns.tolist()                   # 将数据框的列名全部提取出来存放在列表里
print(col_name)

col_name.insert(2,'city')                      # 在列索引为2的位置插入一列,列名为:city,刚插入时不会有值,整列都是NaN
df1=df1.reindex(columns=col_name)              # DataFrame.reindex() 对原行/列索引重新构建索引值

df1['city']=['北京','山西','湖北','澳门']   # 给city列赋值
print(df1)

print("----------新增行---------------")
# 重要!!先创建一个DataFrame,用来增加进数据框的最后一行
new=pd.DataFrame({'name':'lisa',
                  'gender':'F',
                  'city':'北京',
                  'age':19,
                  'score':100},
                 index=[1])   # 自定义索引为:1 ,这里也可以不设置index
print(new)

print("-------在原数据框df1最后一行新增一行,用append方法------------")
df1=df1.append(new,ignore_index=True)   # ignore_index=True,表示不按原来的索引,从0开始自动递增
print(df1)

在这里插入图片描述
在这里插入图片描述

10. 用describe()来查看dataFrame指定列的统计信息

df = pd.read_csv('nyc_taxi.csv')
df

结果:
在这里插入图片描述

# 运行describe()来查看value列
df.value.describe()

结果:
在这里插入图片描述
可以看到describe()描述了value列的数据量(count),均值(mean),标准差(std),最小值(min)一直到最大值(max),还有数据类型。

参考

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

comli_cn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值