携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第25天,点击查看活动详情
也是暑假自学python的第35天
今天继续昨天的学习:
今天才学会可以修改复制上的图片大小,一般要缩小50%,以前缩写文章不会弄图片大小,搞得图片很大很影响美观,这次就学会了!
pd的函数学习
3.按值排序:
import random
l=[random.randint(0,100) for i in range(24)]
df4 = pd.DataFrame(np.array(l).reshape(6,4))
print(df4.values)
print('-'*50)
print(df4)
print('-'*50)
#按轴零排序,by后是列名
df4_vsort = df4.sort_values(by=3,axis=0, ascending=False) #寻找的是columns里的3
print(df4_vsort)
#按轴1排序,by后行索引名
df4_vsort = df4.sort_values(by=3,axis=1, ascending=False) #寻找的是index里的3
print(df4_vsort)
输出的结果如下:
ascending表示升序排列,默认为true,如果改为false,则表示降序排序
ascending=False
4.pd处理缺失数据
如果遇到有缺失值的话,使用dropna方法会返回一个新的df,并且将含有nan的那一行全部删除
df_data = pd.DataFrame([np.random.randn(3), [1., 2., np.nan],
[np.nan, 4., np.nan], [1., 2., 3.]])
print(df_data.head())
print(df_data.dropna(inplace=True))
print(df_data.head())
具体输出的结果如下:
默认有一个为空值,那么一整个行就会被删除,如果想要删除这一行,具体的显示如下:
print(df_data.dropna(axis=1)) #某列由nan就删除该列
如果遇到要添加数值的情况:
需要使用到fillna接口:
df_data = pd.DataFrame([np.random.randn(3), [1., 2., np.nan],
[np.nan, 4., np.nan], [1., 2., 3.]])
print(df_data.head())
print(df_data.iloc[:,0].fillna(0.))
df_data.iloc[:,0].fillna(-100.)这句话表示的含义是取到第0列,将其内部缺少的值填补为0,输出的结果如下:
层级索引
多层级的索引,可以将数据进行分组:
主要是使用到了多层级索引的接口: pd.MultiIndex.from_arrays
import pandas as pd
import numpy as np
index1 = pd.MultiIndex.from_arrays([['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'],[0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]], names=['cloth', 'size'])
ser_obj = pd.Series(np.random.randn(12),index=index1)
print(ser_obj)
print(type(ser_obj))
print(type(ser_obj.index))
print(ser_obj.index)
print(ser_obj.index.levels)
具体的索引就是这样子:
a a a b b b c c c
0 1 2 0 1 2 0 1 2
写法为: [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'],[0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]]
输出的结果如下:
打印其索引:
print(ser_obj.index)
输出的结果如下:
对于层级索引取数据:
print(ser_obj['c'])
print(ser_obj['a', 2])
print(ser_obj)
print('-'*50)
print(ser_obj[:, 2])
层级索引学习结束。