python 使用技巧(不断更新中)

0. 写作目的

好记性不如烂笔头。

1. list使用技巧

1.1 对list的进行排序(python2)

import operator

a = [[1, 1, 1, 1, 0.98], [2, 2, 2, 2, 0.99], [3, 3, 3, 3, 0.89]]

a.sort(key=operator.itemgetter(4), reverse=True)
## result:  [[2, 2, 2, 2, 0.99], [1, 1, 1, 1, 0.98], [3, 3, 3, 3, 0.89]]

a.sort(key=operator.itemgetter(4), reverse=False)
## result: [[3, 3, 3, 3, 0.89], [1, 1, 1, 1, 0.98], [2, 2, 2, 2, 0.99]]
##python3

a = [[1,2, 3, 4, 0.56], [23, 43, 5, 64, 0.23], [32, 434, 434,23, 0.99]]

sorted(a, key=lambda x:x[4], reverse=True)

## result
[[32, 434, 434, 23, 0.99], [1, 2, 3, 4, 0.56], [23, 43, 5, 64, 0.23]]

1.2 如果对list中的两个属性进行排序(python2)

import operator

a = [[1,1,1,1,'a',0.98], [2,2,2,2,'b', 0.96], [3,3,3,3,'a', 0.99], [4, 4,4,4,'b', 0.94]]

## first sort according x[4] 
## then sort according x[5] based on x[4]
a.sort(key=lambda x:(x[4], x[5]), reverse=True)
## result: 
#[[2, 2, 2, 2, 'b', 0.96], [4, 4, 4, 4, 'b', 0.94], [3, 3, 3, 3, 'a', 0.99], [1, 1, 1, 1, #'a', 0.98]]

##python3

a = [[1,2, 3, 4, 0.56], [23, 43, 5, 64, 0.23], [32, 434, 434,23, 0.99], [23, 42,32,1999, 0.56]]

sorted(a, key=lambda x:(x[4], x[3]), reverse=True)

## result
[[32, 434, 434, 23, 0.99], [23, 42, 32, 1999, 0.56], [1, 2, 3, 4, 0.56], [23, 43, 5, 64, 0.23]]

1.3 列表推导式的书写

a = [1.0, 0.3, 0.4, 0.4, 0]

## 输出 > 0 为1, 其余为0
b = [1 if x > 0 else 0 for x in a]

## output: [1 1 1 1 0]

2 有关json的读写

## read json

import json

targetData = [1,2, 3,4]
##targetData = [ {'1': 1}, {'2':2} ]

with open('jsonData.json', 'w') as f:
    json.dump( targetData, f )



## load json data

import json

dataDir = 'jsonData.json'
with open(dataDir, 'r') as f:
    loadData = json.load( f )

3. 有关CSV文件的操作(pandas)

3.1 列数较少时,csv文件的写

### write data
import pandas as pd

a = [1, 1, 1]
b = ['2', '2', '2']
c = ['ds', 'asdf', 'afgew']

dataPD = pd.DataFrame( {'column1': a, 'column2':b, 'column3': c} )
dataPD.to_csv('writeCSV.csv', index = False)



3.2 列数较多时,csv文件的写

import pandas as pd

dataList = [['row1', 1, 2, 3, 'featuredata-4'], ['row2', 2,3, 4, 'featuredata-4']]

nameList = ['column1', 'column2', 'column3', 'column4']

dataPD = pd.DataFrame( dataList, columns = nameList )
dataPD.to_csv( 'writeCSV.csv', index=False)

3.3 csv文件的读取与部分操作

import pandas as pd

csvDir = 'writeCSV.csv'

dataPD = pd.read_csv( csvDir, encoding='utf-8' )

## return the shape of dataPD: turple type 
dataPD.shape

## the first row data
temp = dataPD.loc[0,:]  ## this data including the column-name
temp = dataPD.loc[0]    ## this data including the column-name
## visit each data in this row
for ii in range(temp.shape[0]):
    rowData = temp[ii]

## return the column data
dataPD['column-name'] ## return a Serise

(dataPD['column-name']).values ## return a list for this column

 

[Reference]

[1] json读写:https://www.cnblogs.com/bigberg/p/6430095.html

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值