python pandas学习整理

Pandas

处理csv文件用到了Pandas,以下是关于pandas库的一些简单的使用介绍

创建列表

import pandas as pd

# 列表的方式创建DataFrame
data = [['name1', 320.9,100],['name2', 120.4, 50],['name3', 1.4, 200]]
column = ['Name', 'Value', 'Nums']
df = pd.DataFrame(data = data, columns=column)
print(df)

输出:

    Name  Value  Nums
0  name1  320.9   100
1  name2  120.4    50
2  name3    1.4   200

DataFrame 的重要属性

# values: 查看所有元素的值
# dtype: 所有元素的类型
# index:  查看所有的行名、重命名行名
# column: 查看所有的列名、重命名列名
# T     :行列数据转换
# head:   查看前N条数据,默认5
# tail:   查看后N条数据,默认5
# shape:  查看行数和列数shape[0]表示行,shape[1]表示列
# info:   查看索引,数据类型 和 内存信息
print(df.values)
print(df.dtypes)
print(list(df.index))
print(list(df.columns))
  • df.values
[['name1' 320.9 100]
 ['name2' 120.4 50]
 ['name3' 1.4 200]]
  • df.dtypes
Name      object
Value    float64
Nums       int64
dtype: object
  • df.index
[0, 1, 2]
  • df.columns
['Name', 'Value', 'Nums']
  • 修改列名
df.columns = ['P_Name', 'P_Value','P_Nums']
print(df)

修改列名后的输出

  P_Name  P_Value  P_Nums
0  name1    320.9     100
1  name2    120.4      50
2  name3      1.4     200
  • 行列数据的转换
pd.set_option('display.unicode.east_asian_width', True) # 规整格式
new_df = df.T
T = print(new_df)
             0      1      2
P_Name   name1  name2  name3
P_Value  320.9  120.4    1.4
P_Nums     100     50    200
  • 查看前/后 共N条数据
print(df.head(1))
print(df.tail(1))
  P_Name  P_Value  P_Nums
0  name1    320.9     100
  P_Name  P_Value  P_Nums
2  name3      1.4     200
  • 查看行数和列数
print('行:', df.shape[0],'列', df.shape[1])
: 33
  • 查看索引,数据类型,内存信息
print(df.info)
<bound method DataFrame.info of   P_Name  P_Value  P_Nums
0  name1    320.9     100
1  name2    120.4      50
2  name3      1.4     200>

DataFrame的函数

# DataFrame重要的函数
# describe  :查看每列的统计汇总信息,DataFrame类型
# count     : 返回每一列的非空值的个数
# sum       :返回每一列的和,无法计算返回空值
# max
# min
print(df.describe())
print(df.count()) 
  • df.describe()
          P_Value      P_Nums
count    3.000000    3.000000
mean   147.566667  116.666667
std    161.473166   76.376262
min      1.400000   50.000000
25%     60.900000   75.000000
50%    120.400000  100.000000
75%    220.650000  150.000000
max    320.900000  200.000000
  • df.count()
P_Name     3
P_Value    3
P_Nums     3
dtype: int64

导入csv文件

只列举了部分参数

# pd.read_csv(filepath_or_buffer, sep='', header, encoding = None)
# filepath_or_buffer:
# sep: 字符串,分隔符
# header: 指定作为列名的行,默认值为0, 即取第一行的值为列名。数据为除列名以外的数据, 若数据不包含列表,则设置header = None
# encoding: 文件的编码格式

数据抽取

  • loc属性: 以列名(columns)和行名(index)作为参数,当只有一个参数时,默认是行名,即抽取整行数据,包括所有列
  • iloc属性:以行和列的位置索引(即:0,1,2,…)作为参数,当只有一个参数时,默认是行索引,即抽取行数据,包括所有列
data = [[45,65,120],[56,70,50],[67,68,66]]
index = [['Person1', 'Person2', 'Person3']]
columns = ['Math', 'Chinese', 'English']
df = pd.DataFrame(data, index= index, columns= columns)
print(df)

输出:

         Math  Chinese  English
Person1    45       65      120
Person2    56       70       50
Person3    67       68       66

提取行数据

  • 按行索引的名称
print(df.loc['Person1'])    #行索引的名称
         Math  Chinese  English
Person1    45       65      120
  • 按行索引的索引
print(df.iloc[0])           
Math        45
Chinese     65
English    120
Name: (Person1,), dtype: int64

很明显,按行索引的名称提取数据,数据貌似要更“好看”一些

提取多行数据

# 注意:这里面的两个中括号
print(df.loc[['Person1', 'Person3']])
print(df.iloc[[0, 2]]) 
         Math  Chinese  English
Person1    45       65      120
Person3    67       68       66
         Math  Chinese  English
Person1    45       65      120
Person3    67       68       66

注意:上述提取多行数据时,有两组"[ ]"

提取连续多行数据: 从start到end

# 注意:这里不需要两个[], 行索引名称,包含person2 
print(df.loc['Person1':'Person3'])
# 注意:行索引序号,含0 不含2
print(df.iloc[0:2])

这里和上面提取间隔的数据不同,只需要一组"[ ]", 表示这里面是连续的
输出如下:

         Math  Chinese  English
Person1    45       65      120
Person2    56       70       50
Person3    67       68       66

注意:iloc[0:2]只包含从0开始的第1,2行,并不包含第3行,这和loc包含全部不同,舍弃了end

         Math  Chinese  English
Person1    45       65      120
Person2    56       70       50

数据切片

上述数据提取的时候,使用两个参数:start, stop. 数据切片用到三个参数
start, stop, step

print(df.iloc[1::]) # 从第1行开始(第1行不需要),直到最后一行
print(df.iloc[::2]) # 从第1行开始(第1行需要保留),step 为2
         Math  Chinese  English
Person2    56       70       50
Person3    67       68       66
         Math  Chinese  English
Person1    45       65      120
Person3    67       68       66

提取某一列的头3行数据

# 方法1:
value_list = df['Column_Name'].head(3)   //提取列名称为Column_Name的前3行数据

# 方法2:
value_list = []
# col_value_list = df['Column_Name'].values
for i in range(3):
	value_list.append( df['Column_Name'].values[i])

很明显,方法1一句话就搞定了提取前3行数据的工作,比方法2简洁很多

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值