Python中pandas和numpy库的应用

python数据分析的两个库—pandas和numpy

初步接触这两个库时用了两个同事的日报和周报,感谢贤贤&lulu!!
跟随本文章码一遍,快速进入python处理数据时代!!!

Series(一维数据)

Series相当于一组数据,可以不设索引index;也可以设置索引一对一,允许索引重复----目前自我应用不多

import pandas as pd
from pandas import Series
s1 = Series(data=[1,2,2,3,5],index=['tom','lucy','bobo','jay','tom'],name='scored')
s1

得出结果

tom     1
lucy    2
bobo    2
jay     3
tom     5
Name: scored, dtype: int64
DataFrame(多特征数据,既有行索引,又有列索引)

重点关注,处理Excel数据时,DataFrame频繁应用

1. 读取Excel/csv文件
import pandas as pd
df1 = pd.read_csv('../111.csv',sep=',',engine = 'python',encoding = "utf-8-sig")
df2 = pd.read_excel('../bdsh_SMB_YTD.xlsx',sheet_name = "集团")
	学号	姓名	科目	成绩
0	1	张1	英语	45
1	2	李2	政治	37
2	3	王3	数学	86
3	4	刘4	语文	68
4	5	赵5	NaN	72
5	6	子鼠	政治	90
6	7	丑牛	数学	83
7	8	寅虎	语文	78
8	9	卯兔	英语	69
9	10	辰龙	语文	39

如果出现utf-8 can’t read或者出现乱码时,可以改为GBK

2. 数据空值处理
# df1 = df.fillna('空白')
# 会在所有NaN处都填写上  空白 ----一般不采用
df['科目']= df['科目'].fillna('科目')
df['成绩']= df['成绩'].fillna(0)
df['成绩']= df['成绩'].apply(lambda x:x if x!=0 else 0)
df

读出结果

	学号	姓名	科目	成绩
0	1	张1	英语	45.0
1	2	李2	政治	0.0
2	3	王3	数学	86.0
3	4	刘4	语文	68.0
4	5	赵5	科目	72.0
5	6	子鼠	政治	90.0
6	7	丑牛	数学	83.0
7	8	寅虎	语文	78.0
8	9	卯兔	英语	69.0
9	10	辰龙	语文	0.0
3. 数据筛选和列标题重置
#更改科目为英语和科目的成绩为90
df.loc[(df['科目'].isin(['英语','科目'])), '成绩'] = 90
#筛选姓名/科目/成绩三列
df1=df[['姓名','科目','成绩']]
#更改df1中列名
df1.rename(columns={'姓名': '学生姓名','科目': '学科'}, inplace=True)
df1

得出结果

学生姓名	学科	成绩
0	张1	英语	90.0
1	李2	政治	0.0
2	王3	数学	86.0
3	刘4	语文	68.0
4	赵5	科目	90.0
5	子鼠	政治	90.0
6	丑牛	数学	83.0
7	寅虎	语文	78.0
8	卯兔	英语	90.0
9	辰龙	语文	0.0
4. 数据透视
score_avg = pd.pivot_table(df1,index=["学科"],values=["成绩"],aggfunc=np.mean)
score_avg.rename(columns={'成绩': '平均成绩'}, inplace=True)
score_avg.reset_index()

得出结果

	学科	平均成绩
0	政治	45.000000
1	数学	84.500000
2	科目	90.000000
3	英语	90.000000
4	语文	48.666667
5. groupby用法
score_3 = df1.groupby(['学科'])['成绩'].agg('sum')
score_3.reset_index()

得出结果

学科	成绩
0	政治	90.0
1	数学	169.0
2	科目	90.0
3	英语	180.0
4	语文	146.0
6. merge用法

两个表中有同一列作为KEY,左/右/全连接成一张表

score = pd.merge(score_avg, score_3, on='学科', how='left')
score.reset_index()

得出结果

学科	平均成绩	成绩
0	政治	45.000000	90.0
1	数学	84.500000	169.0
2	科目	90.000000	90.0
3	英语	90.000000	180.0
4	语文	48.666667	146.0

版权声明:本文为Fancy_87原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。