不论是按key排序,还是按values排序,都一条,比较好记
sorted字典的items()(迭代对象,是元组),排序完了再转换回来
a = {'d': 1, 'c': 4, 'a': 2, 'b': 3}
b = dict(sorted(a.items(), key=lambda item: item[0])) # 按key排序
c = dict(sorted(a.items(), key=lambda item: item[1])) # 按values排序
print(sorted(a)) # 一般直接用字典名,都是指代key列表,等于dict.keys()
print(b, c, sep='\n')
#输出
[‘a’, ‘b’, ‘c’, ‘d’]
{‘a’: 2, ‘b’: 3, ‘c’: 4, ‘d’: 1}
{‘d’: 1, ‘a’: 2, ‘b’: 3, ‘c’: 4}
a = {"d":1, "c":2}
b = {'c':3, 'a':4}
c = {"b":5, "c":6}
#合并字典,值以后面的为准
d1 = {**a, **b}
d2 = {**b, **a}
d3 = {**a, **b, **c}
print(d1, d2, d3, sep='\n')
#输出
{‘d’: 1, ‘c’: 3, ‘a’: 4}
{‘c’: 2, ‘a’: 4, ‘d’: 1}
{‘d’: 1, ‘c’: 6, ‘a’: 4, ‘b’: 5}
pandas文档
https://pandas.pydata.org/pandas-docs/stable/index.html
使用例子
data = pd.DataFrame({‘a’: [1,2,3], ‘b’: [2,3,4], ‘c’: [3,4,5], ‘d’: [4,5,6]})
a b c d
1 2 3 4
2 3 4 5
3 4 5 6
返回二维的DataFrame,或一维的Series
参数 | 说明 |
---|---|
filepath_or_buffer | 文件地址,可以是本地文件,也可以是URL( http、ftp…) |
header | 默认状态时把第一行当作列名,设置成None则自动生成数字列名 |
parse_dates | |
index_col | |
squeeze | |
data_parser |
data.columns = [‘aa’, ‘bb’, ‘cc’, ‘dd’] # 修改列名
for index, num in data.iteritems():
print(index, num)
a 0 1
1 2
2 3
Name: a, dtype: int64
b 0 2
1 3
2 4
Name: b, dtype: int64
c 0 3
1 4
2 5
Name: c, dtype: int64
d 0 4
1 5
2 6
Name: d, dtype: int64
可以和数据库数据的拼接做类比
参数 | 说明 |
---|---|
objs | 想要连接的列表或字典,多个对象放在列表中作为一个参数 |
axis | 连接的轴方向。默认为0(如果是二维数据,就是竖着的方向) |
join | 其他轴的索引按交集inner、并集outer进行合并。默认为"outer" |
join_axes | 指明用于其他n-1条轴的索引,不执行交并运算 |
keys | 与连接对象有关的值,用于形成连接轴向上的层次化索引,可以是列表、数组、元组数组、数组列表(需设置levels) |
levels | 指定用作层次化索引各个级别的索引(用于设置keys) |
names | 创建分层级别的名称(用于设置keys、levels) |
verify_integrity | 检查结果对象新轴上的重复情况,发现时引发异常。默认为False(允许重复) |
ignore_index | 不保留连接轴上的索引,产生新索引range(total_length) |
data = pd.concat([train_data, test_data])
LabelEncoder是一个类,包含4个方法
方法 | 说明 |
---|---|
fit() | 根据输入形成一个字典 |
transform() | 将输入转换为索引 |
fir_transform() | 先形成字典,再转换为索引 |
inverse_transform() | 根据索引得到原始数据 |
将不规律的特征值转换为索引来规范化取值
比如给一些性别特征值,转换成01