Pandas数据分析③——数据规整1(索引和列名调整/数据内容调整/排序)
程序员文章站
2022-06-05 18:59:23
...
Pandas系列目录如下:
Pandas数据分析①——数据读取(CSV/TXT/JSON)
Pandas数据分析②——数据清洗(重复值/缺失值/异常值)
Pandas数据分析④——数据规整2(数据拼接/透视)
Pandas数据分析⑤——数据分组与函数使用(Groupby/Agg/Apply/mean/sum/count)
Pandas数据分析⑥——数据分析实例(货品送达率与合格率/返修率/拒收率)
Pandas数据分析⑦——数据分析实例2(泰坦尼克号生存率分析)
数据规整是在数据清洗完毕后,将其调整成适合分析的结构,为后续的深入分析作准备,主要分为以下几类:
索引和列名调整: 设定新索引,筛选想要的列,更改列名
数据排序:根据索引或列进行排序
数据格式调整:更改数据类型,更改数据内容(去除空格标点符号/截取/替换/统一数据单位等),增加用于分析的辅助列
数据拼接:行堆叠和列拼接
数据透视:行或列维度转换
本篇先介绍前3种,其余下一篇介绍~~
一、索引和列名调整
1、索引
① 设定索引
一般会在建立Dataframe或Series是直接设定索引
obj2 = pd.Series([4, 7, 9, 10], index=['ni', 'ta', 'miss', 'kkaa'])
data = {'stata': ['china', 'china', 'china', 'japan'],
'pop': [1.3, 1.4, 1.5, 1.6],
'year': [1990, 2010, 2001, 1988]}
frame = pd.DataFrame(data, index=['one', 'two', 'three', 'four']) # 生成的Dataframe会自动分配索引
②修改索引,直接赋值给Index即可
frame.index=['1','2','3','4']
print(frame)
③给索引命名
frame.index.name='my_index'
print(frame)
②如何索引
两种方式:iloc,loc,前者是下标索引,后者是名字索引
frame = pd.DataFrame(np.arange(9).reshape(3, 3),
index=[1, 2, 4],
columns=['hoin', 'hui', 'dfs'])
print(frame.loc[[1,2], ['hoin', 'hui']])
print(frame.iloc[[1, 2], [0, 1, 2]])
print(frame.iloc[2]) # 仅取出第1行的数据
print(frame.loc[:2, ['hui','hoin']]) # loc索引切片包含,但是iloc切片索引不包含
2、列调整
①筛选需要的列
在建立series和Datafram时通过columns字段写入
data = pd.read_csv("data.csv",encoding='gbk')
print(data)
data1 = pd.DataFrame(data,columns=['订单号','数量'])
print(data1.head())
②修改列名
如果对某个列名不满意,可以用rename的方式进行修改
data1.rename(columns={' 销售金额 ': '金额'},inplace=True)
print(data1.columns)
二、数据内容调整
1、修改数据类型
print(data.dtypes)
data['订单行'] = data['订单行'].astype(object)
print(data.dtypes)
2、更改数据内容
①去除空格
frame = pd.DataFrame([[' 你 ' , ' 和', '他'],['都', '很 ', ' 棒']],
index=[1,2],
columns=['hoin', 'hui', 'dfs'])
print(frame)
for i in range(len(frame.columns)):
frame.iloc[:,i] = frame.iloc[:,i].str.strip()
print(frame)
②替换字符
frame.dfs = frame.dfs.replace("他","他们")
print(frame)
③截取部分字符
frame = pd.DataFrame([['你们真好' , '一起上课', '一起吃饭'],['我也一样', '非常', ' 棒']],
index=[1,2],
columns=['hoin', 'hui', 'dfs'])
for i in range(len(frame.columns)):
frame.iloc[:,i] = frame.iloc[:,i].str[:2]
print(frame)
三、数据排序
1、按索引排序
data = pd.read_csv("data.csv",encoding='gbk')
print(data.head())
print(data.sort_index(ascending=False).head())
2、按列值排序
print(data.sort_values(['销售时间','数量'],ascending=False).head())
后续还会继续出numpy,matplotlib,机器学习等数据分析必备技能,感兴趣的小伙伴可关注下我喔