处理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
# 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))
[['name1' 320.9 100]
['name2' 120.4 50]
['name3' 1.4 200]]
Name object
Value float64
Nums int64
dtype: object
[0, 1, 2]
['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
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])
行: 3 列 3
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重要的函数
# describe :查看每列的统计汇总信息,DataFrame类型
# count : 返回每一列的非空值的个数
# sum :返回每一列的和,无法计算返回空值
# max
# min
print(df.describe())
print(df.count())
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
P_Name 3
P_Value 3
P_Nums 3
dtype: int64
只列举了部分参数
# pd.read_csv(filepath_or_buffer, sep='', header, encoding = None)
# filepath_or_buffer:
# sep: 字符串,分隔符
# header: 指定作为列名的行,默认值为0, 即取第一行的值为列名。数据为除列名以外的数据, 若数据不包含列表,则设置header = None
# encoding: 文件的编码格式
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
注意:上述提取多行数据时,有两组"[ ]"
# 注意:这里不需要两个[], 行索引名称,包含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