有这样一张电票数据表:2020转贴现清单.csv (实际68行数据,含标题行)
今天我们用它来练习用python (含 Pandas, pymysql)和 MySQL 如何对它进行一些基础的操作.
首先, 我们导入它
import pandas as pd
#本开关用于控制pandas中float数据的显示方式,关闭科学计数方式,显示小数点后两位.
pd.options.display.float_format=‘{:.2f}‘.format
#表1是清单,表2是承兑行额度表
file1_path = ‘C:/Users/juncheng/Desktop/PY/2020转贴现清单.csv‘
file2_path = ‘C:/Users/juncheng/Desktop/PY/剩余额度.csv‘
#用read_csv读取,只取四列usecols("票号", "票面金额(元)","票面到期日","承兑行"),注意cols从0开始数.
bill_list = pd.read_csv(file1_path, usecols=(0,4,9,17),header=0)
得到的bill_list如下图:
bill_list
Out[7]:
票据号码 票面金额 到期日 承兑行
0 130558100301420200703673063725 2000000.00 2020-11-01 中国民生银行
1 110329007403220200618660897195 1000000.00 2020-11-02 中国农业银行
2 110329007403220200618660897218 1000000.00 2020-11-02 中国农业银行
3 110429000615420200619662041630 1000000.00 2020-11-02 中国银行
4 130558401822120200804695066745 8000000.00 2020-11-02 中国民生银行
.. ... ... ... ...
63 110458602041820200528647586166 1500000.00 2020-11-28 中国银行
64 130133100013120200527645905735 1000000.00 2020-11-28 交通银行
65 130133100013120200527645905743 1000000.00 2020-11-28 交通银行
66 130558100301420200730692349173 2000000.00 2020-11-28 中国民生银行
67 130558506700420200630670941661 1455514.85 2020-12-30 中国民生银行
[68 rows x 4 columns]
bill_list是一个DataFrame, 大小是[68 rows x 4 columns], 下面我们再对它进行一些操作, 注意体会各个命令的实际效果
list(bill_list)
Out[6]: [‘票据号码‘, ‘票面金额‘, ‘到期日‘, ‘承兑行‘]
bill_list.columns
Out[8]: Index([‘票据号码‘, ‘票面金额‘, ‘到期日‘, ‘承兑行‘], dtype=‘object‘)
bill_list.values
Out[3]:
array([[‘130558100301420200703673063725‘, 2000000.0, ‘2020-11-01‘, ‘中国民生银行‘],
[‘110329007403220200618660897195‘, 1000000.0, ‘2020-11-02‘, ‘中国农业银行‘],
[‘110329007403220200618660897218‘, 1000000.0, ‘2020-11-02‘, ‘中国农业银行‘],
[‘110429000615420200619662041630‘, 1000000.0, ‘2020-11-02‘, ‘中国银行‘],
[‘130558401822120200804695066745‘, 8000000.0, ‘2020-11-02‘, ‘中国民生银行‘],
[‘130558100301420200804694990785‘, 2273800.0, ‘2020-11-03‘, ‘中国民生银行‘],
[‘130558506700420200630670941661‘, 1455514.85, ‘2020-12-30‘,‘中国民生银行‘]], dtype=object)
关于df.values, dtype=object, 它大概是这么个意思 (也看不出来和原来的DataFrame有多大的区别 )
按票据号码升序排列, axis =0 是按列, 也可以不写,默认. 如果 axis = 1, 就是按行, 就必须写.
bill_list.sort_values(by=‘票据号码‘,axis =0)
Out[9]:
票据号码 票面金额 到期日 承兑行
12 110258100201120200310594392608 6300000.00 2020-11-10 中国工商银行
24 110258650027020200515637250023 2900000.00 2020-11-15 中国工商银行
42 110258800287820200820704406617 1550000.00 2020-11-20 中国工商银行
52 110258800287820200825707679003 2250000.00 2020-11-25 中国工商银行
59 110258800287820200827710725997 1200000.00 2020-11-27 中国工商银行
.. ... ... ... ...
35 190729000121820200724687172545 2000000.00 2020-11-19 中国农业银行
36 190729000121820200724687172762 2000000.00 2020-11-19 中国农业银行
37 190729000121820200724687172779 2000000.00 2020-11-19 中国农业银行
38 190729000121820200724687182977 2000000.00 2020-11-19 中国农业银行
39 190729000121820200724687182985 2000000.00 2020-11-19 中国农业银行
[68 rows x 4 columns]
如果想排序的有两列,比如按‘票面金额‘倒序(由大到小),按‘到期日‘顺序(由小到大),可以这么写:
bill_list.sort_values(by=[‘票面金额‘,‘到期日‘],axis =0,ascending = [False, True])
Out[10]:
票据号码 票面金额 到期日 承兑行
32 131022100018820200518638790084 35060806.35 2020-11-18 上海浦东发展银行
18 131060200017220200515637681036 30428000.00 2020-11-13 上海浦东发展银行
19 131022100018820200513636202745 30000000.00 2020-11-13 上海浦东发展银行
13 130133700007220200511633966401 12000000.00 2020-11-11 交通银行
4 130558401822120200804695066745 8000000.00 2020-11-02 中国民生银行
.. ... ... ... ...
3 110429000615420200619662041630 1000000.00 2020-11-02 中国银行
25 130158100008620200515637990749 1000000.00 2020-11-15 交通银行
44 130558506700420200520640035647 1000000.00 2020-11-20 中国民生银行
64 130133100013120200527645905735 1000000.00 2020-11-28 交通银行
65 130133100013120200527645905743 1000000.00 2020-11-28 交通银行
[68 rows x 4 columns]
原文:https://www.cnblogs.com/treasury-manager/p/13857464.html