Pands.Dataframe的一些基本操作

最近在处理数据时,用到了Dataframe格式的数据,在这里记录一下Dataframe的一些基本操作

首先写一个csv文件

with open('data/t_pd.csv','a') as f:
    for i in range(10):
        f.write(",".join(str(item)for item in [1,2,3])+"\n")

注意,这里的“,"join()十分实用
在Python中,‘,’.join() 是一个字符串方法,用于将序列中的元素连接成一个字符串,元素之间用指定的分隔符分隔。这里的 ‘,’ 就是指定的分隔符,即逗号。
join() 方法的工作原理是遍历序列中的每个元素,将它们转换为字符串(如果它们不是字符串),然后将它们连接起来,同时在每个元素之间插入分隔符。

文件是这样:
在这里插入图片描述

接下来,用pd.read_csv就可以读取文件

import pandas as pd

f_1 = pd.read_csv('data/t_pd.csv')
print(1)
   1  2  3
0  1  2  3
1  1  2  3
2  1  2  3
3  1  2  3
4  1  2  3
5  1  2  3
6  1  2  3
7  1  2  3
8  1  2  3
<class 'pandas.core.frame.DataFrame'>

因为这里在工程上需要保存目标文件,然后在外部读取,才先保存为csv文件,然后再用pd.read_csv读取文件,才介绍的这段代码。此外还可以直接将数据转化为Dataframe格式:

import numpy as np
import pandas as pd

a = np.array([
    [1,2,3],
    [1,2,3],
    [1,2,3],
    [1,2,3],
    [1,2,3],
    [1,2,3]
])

pd_data = pd.DataFrame(a)
print(pd_data)
print(type(pd_data))
   0  1  2
0  1  2  3
1  1  2  3
2  1  2  3
3  1  2  3
4  1  2  3
5  1  2  3
<class 'pandas.core.frame.DataFrame'>

接下来是一些常用的Dataframe操作:

查看DataFrame信息:

print(pd_data.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   0       6 non-null      int32
 1   1       6 non-null      int32
 2   2       6 non-null      int32
dtypes: int32(3)

选择和修改数据

选择列
pd_data[0]
0    1
1    1
2    1
3    1
4    1
5    1
Name: 0, dtype: int32

选择行
pd_data.iloc[0]
0    1
1    2
2    3

添加和删除列

添加列
pd_data['new']=[6,6,6,6,6,6]
pd_data
   0  1  2  new
0  1  2  3    6
1  1  2  3    6
2  1  2  3    6
3  1  2  3    6
4  1  2  3    6
5  1  2  3    6
添加行
pd_data.loc[7]=[7,7,7,7]
pd_data
   0  1  2  new
0  1  2  3    6
1  1  2  3    6
2  1  2  3    6
3  1  2  3    6
4  1  2  3    6
5  1  2  3    6
7  7  7  7    7
删除行
pd_data.drop(7)
   0  1  2  new
0  1  2  3    6
1  1  2  3    6
2  1  2  3    6
3  1  2  3    6
4  1  2  3    6
5  1  2  3    6
删除列
pd_data.drop('new',axis=1)
   0  1  2
0  1  2  3
1  1  2  3
2  1  2  3
3  1  2  3
4  1  2  3
5  1  2  3
7  7  7  7

如果参数inplace设置为True,则将更改原始Data

pd_data.drop(7,inplace=True)
pd_data.drop('new',axis=1,inplace=True)
pd_data
   0  1  2
0  1  2  3
1  1  2  3
2  1  2  3
3  1  2  3
4  1  2  3
5  1  2  3

运算和统计描述

描述性统计
pd_data.describe()
         0    1    2
count  6.0  6.0  6.0
mean   1.0  2.0  3.0
std    0.0  0.0  0.0
min    1.0  2.0  3.0
25%    1.0  2.0  3.0
50%    1.0  2.0  3.0
75%    1.0  2.0  3.0
max    1.0  2.0  3.0
计算总和
pd_data.sum()
0     6
1    12
2    18
dtype: int64
pd_data.sum(1)
0    6
1    6
2    6
3    6
4    6
5    6
dtype: int64
计算平均值
pd_data.mean()
0    1.0
1    2.0
2    3.0
dtype: float64
pd_data.mean(1)
0    2.0
1    2.0
2    2.0
3    2.0
4    2.0
5    2.0
dtype: float64

索引和排序

索引

指定的列将被设置为索引

pd_data['new']=[str(i) for i in range(6,12)]
pd_data
   0  1  2 new
0  1  2  3   6
1  1  2  3   7
2  1  2  3   8
3  1  2  3   9
4  1  2  3  10
5  1  2  3  11
pd_data.set_index('new')
     0  1  2
new         
6    1  2  3
7    1  2  3
8    1  2  3
9    1  2  3
10   1  2  3
11   1  2  3
排序
import random
pd_data['a'] = [str(random.random()) for i in range(6)]
pd_data['b'] = [str(random.random()) for i in range(6)]
pd_data
   0  1  2 new                    a                    b
0  1  2  3   6   0.5809154982534012   0.6472438436842606
1  1  2  3   7   0.8832481123517181   0.3631676478794732
2  1  2  3   8  0.07186754736533463    0.757753287695164
3  1  2  3   9   0.8635028791487391  0.02425099355183047
4  1  2  3  10    0.628171413903018   0.4545331697214814
5  1  2  3  11  0.25724579828162364   0.6315262014843183
pd_data.sort_values(by='a',ascending=True)
   0  1  2 new                    a                    b
2  1  2  3   8  0.07186754736533463    0.757753287695164
5  1  2  3  11  0.25724579828162364   0.6315262014843183
0  1  2  3   6   0.5809154982534012   0.6472438436842606
4  1  2  3  10    0.628171413903018   0.4545331697214814
3  1  2  3   9   0.8635028791487391  0.02425099355183047
1  1  2  3   7   0.8832481123517181   0.3631676478794732
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值