pandas在excel中的应用2

pandas在excel中的应用2,第1张

pandas在excel中的应用2

pandas在excel中的应用_Jack_2085-CSDN博客1、pandas 中 一维数组,二维数组和exce,csv的简单应用。import pandas as pd# series 方法代表一维数组# li_st = ["r", "t", "c", "d"]# li_index = ["p", "k", "y", "o"]# 指定索引,索引的长度要和一维数组的长度一样# li_st_ser = pd.Series(li_st, li_index)# print(li_st_ser)# di_ct = {"a": "1", "v": 3https://blog.csdn.net/weixin_54217632/article/details/121953852

1、python中时间的取值与转换
from dateutil.parser import parse
from win32timezone import now
from datetime import datetime

# 输出当前时间
print(now())
print(datetime.now())
# 输出年月日时分秒
print(now().year)
print(datetime.now().month)
print(datetime.now().day)
print(now().hour)
print(now().minute)
print(now().second)
# 输出星期几
print(datetime.now().weekday()+1)
print(datetime.now().isoweekday())
# 输出日期和时间
print(datetime.now().date())
print(datetime.now().time())
# 输出指定格式的日期及时间
print(datetime.now().strftime("%Y-%m-%d"))
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
# 字符串转换成时间
print(parse("2021-12-21 20:50:24"))
print(type(parse("2021-12-21 20:50:24")))
2、pandas根据时间及时间段取行信息
import pandas as pd
from datetime import datetime

from dateutil.parser import parse

pdIndex = pd.read_excel("C:/Users/Administrator/Desktop/456999/top10.xlsx", sheet_name="Sheet2")
pdd = pd.Dataframe(pdIndex)
print(pdIndex)

# 指定列中某天的行信息
indexInfo = pdd[pdd["成交时间"] == parse("2019-09-21")]
print(indexInfo)

# 指定大于某天的行信息
moreIndexInfo = pdd[pdd["成交时间"] > parse("2019-09-14")]
print(moreIndexInfo)

# 指定小于某天的行信息
lessIndexInfo = pdd[pdd["成交时间"] < parse("2019-09-14")]
print(lessIndexInfo)

# 指定某段时间的行信息
betweenIndexInfo = pdd[(pdd["成交时间"] > parse("2019-09-15")) & (pdd["成交时间"] < parse("2019-09-22"))]
print(betweenIndexInfo)
3、生成时间行索引的二维数组,求指定行和列的值
import pandas as pd
import numpy as np

# 生成时间行索引的二维数组,求指定行和列的值。
pdIndex = pd.read_excel("C:/Users/Administrator/Desktop/456999/top10.xlsx", sheet_name="Sheet2")
pdd = pd.Dataframe(pdIndex)
print(pdIndex)

indexMore = pd.DatetimeIndex(["2019-09-11", "2019-09-12", "2019-09-13", "2019-09-14",
                              "2019-09-15", "2019-09-16", "2019-09-17", "2019-09-18",
                              ])

#  输出一个时间行索引的二维数组
dataInfo = pd.Dataframe(np.arange(1, 9), columns=["num"], index=indexMore)
print(dataInfo)

print("*********************************")
da2019 = dataInfo["num"]
print(da2019)

# 通过切片求行的值
dataiIoc = dataInfo[0: 3]
print(dataiIoc)

4、pandas对二维数组行或列的取值       4.1、并且保存在excel中
import numpy as np
import pandas as pd

# pandas对二维数组行或列的取值
data = pd.Dataframe(np.arange(16).reshape(4, 4), index=list("ABCD"), columns=list('wxyz'))
print(data)
print(data[0:2])  # 取前两行数据
print('+++++++++++++')

print(len(data))  # 求出一共多少行
print(data.columns.size)  # 求出一共多少列
print('+++++++++++++')

print(data.columns)  # 列索引名称
print(data.index)  # 行索引名称
print('+++++++++++++data.loc[A]重点关注')

print(data['x'])  # 取列索引为x的一列数据
print(data.loc['A'])  # 取第行索引为”A“的一行数据,
print('+++++++++++++')

print(data.loc[:, ['x', 'z']])  # 表示选取所有的行以及columns为a,b的列;
print(data.loc[['A', 'B'], ['x', 'z']])  # 表示选取'A'和'B'这两行以及columns为x,z的列的并集;
print('+++++++++++++')

# 下面两行代码的区别。
print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@下面两行代码的区别")
print(data.iloc[1:3, 1:3])  # 数据切片 *** 作,切连续的数据块
print(data.iloc[[1, 2], [1, 2]])  # 即可以自由选取行位置,和列位置对应的数据,切零散的数据块
print('+++++++++++++')

print(data[data > 2])  # 表示选取数据集中大于0的数据
print(data[data.x > 5])  # 表示选取数据集中x这一列大于5的所有的行

print('+++++++++++++')
a1 = data.copy()
print(a1[a1['y'].isin(['6', '10'])])  # 表显示满足条件:列y中的值包含'6','8'的所有行。

print(data.mean())  # 默认对每一列的数据求平均值;若加上参数a.mean(1)则对每一行求平均值;
print(data['x'].value_counts())  # 统计某一列x中各个值出现的次数:

print(data.describe())  # 对每一列数据进行统计,包括计数,均值,std,各个分位数等。

data.to_excel('C:/Users/Administrator/Desktop/456999/t119top100.xlsx')  # 数据输出至Excel
5、pandas时间偏移的 *** 作
from datetime import datetime
from dateutil.parser import parse
from pandas.tseries.offsets import Day, Hour, Minute
date = datetime(2021, 12, 22, 15, 10)

# pandas时间偏移的 *** 作

# 用parse函数求时间差
pps = parse("2025-08-15") - parse("2021-12-22")
print(pps)

# 加一天
date_day = date+Day(1)
print(date_day)

# 加一小时
date_hour = date+Hour(1)
print(date_hour)

# 加一分钟
date_Minute = date+Minute(1)
print(date_Minute)
6、pandas 对excel的分组统计与计算
import pandas as pd


pdIndex = pd.read_excel("C:/Users/Administrator/Desktop/456999/top10.xlsx", sheet_name="Sheet5")
pdd = pd.Dataframe(pdIndex)
print(pdIndex)

print("++++++++++++++++++++++++++++++++")
# 统计个数count()函数
pdIndexGroupby = pdIndex.groupby("客户分类").count()
print(pdIndexGroupby)
pddGroupby = pdd.groupby("客户分类").count()
print(pddGroupby)

print("#######################################")
# 求和计算
pdIndexGroupbysum = pdIndex.groupby("客户分类").sum()
print(pdIndexGroupbysum)
pddGroupbysum = pdd.groupby("客户分类").sum()
print(pddGroupbysum)

print("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
# 按照多列进行分组计算
pdIndexGroupby2 = pdIndex.groupby(["客户分类", "区域"]).count()
print(pdIndexGroupby2)
pddGroupby2 = pdd.groupby(["客户分类", "区域"]).count()
print(pddGroupby2)

print("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
# 按照多列进行分组求和
pdIndexGroupbysum2 = pdIndex.groupby(["客户分类", "区域"]).sum()
print(pdIndexGroupbysum2)
pddGroupbysum2 = pdd.groupby(["客户分类", "区域"]).sum()
print(pddGroupbysum2)


# 指定某一列对应一列行中不同值的个数
pddGroupbycounted = pdd.groupby("客户分类")["用户ID"].count()
print(pddGroupbycounted)
7、groupby()函数中aggregate()函数和sum()的应用,也就是组合统计和建索引。
import pandas as pd


pdIndex = pd.read_excel("C:/Users/Administrator/Desktop/456999/top10.xlsx", sheet_name="Sheet5")
pdd = pd.Dataframe(pdIndex)
print(pdIndex)

print("++++++++++++++++++++++++++++++++")
# 统计个数和计算求和:aggregate()函数
pdIndexGroupby = pdIndex.groupby("客户分类").count()
print(pdIndexGroupby)
pdIndexGroupbysum = pdIndex.groupby("客户分类").sum()
print(pdIndexGroupbysum)
pddGroupbyaggregate = pdd.groupby("客户分类").aggregate(["count", "sum"])
print(pddGroupbyaggregate)

print("*******************************************")
# aggregate指定任意列,计算和求和
pddAggregateMore = pdd.groupby("客户分类").aggregate({"用户ID": "count", "7月销量": "sum", "8月销量": "sum"})
print(pddAggregateMore)

print("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
# 对分组后的结果重置索引(重新建立索引)
print(pdIndex.groupby("客户分类").sum())
print(pdd.groupby("客户分类").sum().reset_index())

8、

9、

10、

11、

12、

13、

14、

15、

16、

17、

18、

19、

20、

21、

22、

23、

24、

25、

26、

27、

28、

29、

30、

31、

32、

33、

34、

35、

36、

37、

38、

39、

40、

41、

42、

43、

44、

45、

46、

47、

48、

49、

50、

51、

52、

53、

54、

55、

56、

57、

58、

59、

60、

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5679798.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存