Python_数据分析_pandasPython

Pandas-构建一个数据表

2022-01-19  本文已影响0人  Rainbow想喝奶茶

今天的更新,是来看看如何构建一个Pandas,其实是在一个老铁分享的文章中学到的,感谢这位老铁。知识点主要有以下几个:

import pandas as pd
import numpy as np

注:NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。(其实看不太懂,但是直接用吧........

生成固定日期的时间序列

time=pd.date_range(start='12/1/2021', end='12/31/2021')
#输出一个从2021年12月1日至2021年12月31日的时间序列

打印time,输出结果如下所示:


time输出结果

其中 freq='D',意思是以天为切割单位,此项为默认设置,可以更改为其它数值。

固定数据生成随机数组

给定一个列表后,在此列表范围内,想要生成一定长度的新的列表,可以应用np.random.choice(list,size,replace,p)
其中,list为抽取元素的给定列表;
size规定了新的数组的大小;
replace设置为True,意味着取出元素可重复,否则不可重复;
p规定了取出每个元素的概率,默认所有元素取出概率一致。

names = ['Amy', 'Tom', 'Mary', 'Maria', 'Selina', 'Ella']
name_list = np.random.choice(names, size=len(time), replace=True)
#从names中取元素,组成一个大小为time长度的数组,取出元素时可重复,所有元素取出概率一致。

打印name_list,输出结果如下所示:


name_list输出结果

以此类推,构建出水果名称列表,及公斤数列表。

fruits = ['牛油果', '香蕉', '草莓', '耙耙柑', '葡萄', '奶酪枣']
fruit_list = np.random.choice(fruits, size=len(time_range), replace=True)
kilogram = np.random.choice(range(1, 10), size=len(time_range), replace=True)

创建DataFrame

规定列名称,直接应用上方的各个一维数组构建。

order = pd.DataFrame({
    "time": time,
    "fruit": fruit_list,
    "name": name_list,
    "kilogram": kilogram
})

类似的,创建出一个information DataFrame。

information = pd.DataFrame({
    "fruit": fruits,
    "price": [1, 2, 3, 4, 5, 6],
    "region": ["华北", "西北", "西南", "东北", "东南", "华中"]
})

两个DataFrame的分别输出结果是:


order部分数据 information

多个DataFrame合并

想要将两个表合并,应用下方语句:
pd.merge(dataframe_a, dataframe_b,how='outer')
合并a和b,并且是以去并集的形式,如果想要取交集,则how='inner'。
这里希望合并order和information,并且以time升序排列,且重新构建新的DataFrame的索引。语句如下:

df = pd.merge(order, information, how='outer').sort_values("time").reset_index(drop=True)

输出结果为:


df部分输出结果

生成新的字段

如果想依据现有字段生成新的字段,比如依据上方的kilogram和price算总价,则可以应用:

df["amount"] = df["kilogram"] * df["price"]

这个时候在输出df,可以看到,新的字段amount已经计算并匹配完成,结果为:


df更新后部分输出结果

好久不见,22年的开篇真的是拖了很久,最近都没有怎么上进了,每天仿佛都有新的事情要忙~~~

但,今天可能是上进了,因为,我写到这里,已经感觉到疲惫了。

仍然是自我记录,有错误欢迎指正~~~

上一篇下一篇

猜你喜欢

热点阅读