调用的module/package:
OS
Pandas_Series
Pandas_DataFrame
文件读入
加密的.xlsx转为.csv
复制代码
1
2
3copy .xlsx 的有效内容到 .txt 另存为 .csv文件
read_csv
read_csv(os.path.join,…)
复制代码
1
2read_csv(os.path.join(path, file) + '.csv', ...)
read_csv(…, sep=’t’)
复制代码
1
2data1 = pd.read_csv(..., sep='t')
read_csv(…, delimiter=’t’)
复制代码
1
2read_csv(..., delimiter='t')
read_csv(…, parse_dates=[‘填表时间’])
复制代码
1
2read_csv(..., parse_dates=['填表时间'])
提取数据
基础
.loc / .iloc
复制代码
1
2
3print(type(df.loc[10, ['成单金额']])) print(type(df.loc[10, '成单金额']))
复制代码
1
2
3<class 'pandas.core.series.Series'> <class 'str'>
复制代码
1
2
3
4
5
6
7
8
9df = pd.DataFrame([[1, 2], [4, 5], [7, 8]], index=['cobra', 'viper', 'sidewinder'], columns=['max_speed', 'shield']) >>> df max_speed shield cobra 1 2 viper 4 5 sidewinder 7 8
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49cobra 1 viper 4 sidewinder 7 Name: max_speed, dtype: int64 ------------------------------ df['max_speed'] <class 'pandas.core.series.Series'> -------------------------------------------------- max_speed cobra 1 viper 4 sidewinder 7 ------------------------------ df[['max_speed']] <class 'pandas.core.frame.DataFrame'> -------------------------------------------------- max_speed shield cobra 1 2 viper 4 5 sidewinder 7 8 ------------------------------ df[['max_speed', 'shield']] <class 'pandas.core.frame.DataFrame'> -------------------------------------------------- cobra 1 viper 4 sidewinder 7 Name: max_speed, dtype: int64 ------------------------------ df.loc[:, 'max_speed'] <class 'pandas.core.series.Series'> -------------------------------------------------- max_speed shield cobra 1 2 viper 4 5 sidewinder 7 8 ------------------------------ df.loc[:, 'max_speed':'shield'] <class 'pandas.core.frame.DataFrame'> -------------------------------------------------- max_speed cobra 1 viper 4 sidewinder 7 ------------------------------ df.loc[:, ['max_speed']] <class 'pandas.core.frame.DataFrame'> --------------------------------------------------
datetime
复制代码
1
2
3
4
51,string变成datetime格式 dates = pd.to_datetime(pd.Series([‘20010101’, ‘20010331’]), format = ‘%Y%m%d’) 2,datetime变回string格式 dates.apply(lambda x: x.strftime(‘%Y-%m-%d’))
复制代码
1
2
3
4print(list(df['填表时间'])) print(list(df.loc[0, '填表时间'])) print(list(df.loc[0, '填表时间'].apply(lambda x: x.strftime("%Y%m%d"))))
复制代码
1
2
3
4[Timestamp('2019-11-05 00:00:00'), Timestamp('2019-11-05 00:00:00'), Timestamp('2019-11-05 00:00:00'), Timestamp('2019-11-05 00:00:00'), Timestamp('2019-11-05 00:00:00'), Timestamp('2019-11-05 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00'), Timestamp('2019-10-30 00:00:00')] [Timestamp('2019-11-05 00:00:00'), Timestamp('2019-10-30 00:00:00')] ['20191105', '20191030']
运算各项指标
基础
复制代码
1
2
3
4
5
6#算无重复的值的数量 data['商机编号'].unique() --> return *numpy.ndarray* of unique '商机编号' len(data['商机编号'].unique()) --> return unique 商机编号个数
numpy.ndarray.append
复制代码
1
2
3
4
5
6#提取公司销售人员名单 print(data1['公司销售'].unique()) print(data2['公司销售'].unique()) salesperson = np.append(data1['公司销售'].unique(), data2['公司销售'].unique()) print(salesperson)
复制代码
1
2
3
4['A' 'B' 'C'] ['a' 'b' 'c'] ['A' 'B' 'C' 'a' 'b' 'c']
复制代码
1
2
3
4ppl = df[df['填表时间'] == pd.to_datetime(i)]['公司销售'] print(type(ppl)) print(type(ppl.unique()))
复制代码
1
2
3<class 'pandas.core.series.Series'> <class 'numpy.ndarray'>
groupby
对比理解transform/agg的运用
复制代码
1
2
3
4
5
6
7
8
9
10
11
12data = data1.groupby('公司销售')['商机编号'].count() print(data) -> *Series* print('-'*20) data = data1.groupby('公司销售')['商机编号'].transform(lambda x: x.count()) print(data) -> *Series* print('-'*20) data = data1.groupby('公司销售')['商机编号'].agg('count') print(data) -> *Series* print('-'*20) data = data1.groupby('公司销售')['商机编号'].agg(['count']) print(data) -> *DataFrame*
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25公司销售 00002319.小王 1 19001119.小强 3 19011148.小明 2 Name: 商机编号, dtype: int64 -------------------- 0 3 1 3 2 3 3 2 4 1 5 2 Name: 商机编号, dtype: int32 公司销售 00002319.小王 1 19001119.小强 3 19011148.小明 2 Name: 商机编号, dtype: int64 -------------------- count 公司销售 00000019.邓涛 1 19000019.方舟 3 19000148.林宣臣 2
groupby以后series转为dataframe,groupby的key自动成为df的index
复制代码
1
2
3
4
5
6data = data1.groupby('公司销售')['商机编号'].count() print(data) print('-'*20) data = pd.DataFrame(data) print(data)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13公司销售 00002319.小王 1 19001119.小强 3 19011148.小明 2 Name: 商机编号, dtype: int64 -------------------- 商机编号 公司销售 00002319.小王 1 19001119.小强 3 19011148.小明 2
合并两个dataframe:append/join/update
append
复制代码
1
2data = pd.DataFrame(data1.groupby('公司销售')['商机编号'].count()).append(pd.DataFrame(data2.groupby('公司销售')['商机编号'].count()))
update
复制代码
1
2
3
4# update会按index更新,原df没有的columns会自动添加 tmp = df[df['商机状态'] == '赢单'].groupby('公司销售')['成单金额'].agg(['sum']).rename(columns={'sum': '本月实际收入'}) data.update(tmp)
join
复制代码
1
2
3
4tmp = df[df['商机状态'].isin(['进行中', '未开始'])].groupby('公司销售')['商机编号'].agg(['count']).rename( columns={'count': '本月进行中商机数量'}) data = data.join(tmp, how='outer')
最后
以上就是机灵高山最近收集整理的关于Pandas_AutoReport_财务自动化统计报表的全部内容,更多相关Pandas_AutoReport_财务自动化统计报表内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复