首页 > 解决方案 > 计算数据框字典中的行数

问题描述

我有一个数据框字典。我正在尝试计算每个数据框中的行数。对于真实数据,我的代码计算了一个只有几行的数据帧的一万多行。

我试图使用虚拟数据重现错误。不幸的是,该代码可以很好地处理虚拟数据!

import pandas as pd
import numpy  as np
import matplotlib.pyplot as plt

# Dataframe
Df = pd.DataFrame(np.random.randint(0,10,size=(100, 4)), columns=list('ABCD'))

# Map
Ma = Df.groupby('D')

# Dictionary of Dataframes
Di = {}
for name, group in Ma:
    Di[str(name)] = group

# Count the Rows in each Dataframe
Li = []
for k in Di:
    Count = Di[k].shape[0]
    Li.append([Count])

# Flatten
Li_1 = []
for sublist in Li:
    for item in sublist:
        Li_1.append(item)

# Histogram
plt.hist(Li_1, bins=10)
plt.xlabel("Rows / Dataframe")
plt.ylabel("Frequency")
fig = plt.gcf()

标签: pythonpandasdictionary

解决方案


要获取与中每个类别对应的行数'D',您可以.size在执行以下操作时简单地使用groupby

Df.groupby('D').size()

pandas还允许您直接绘制图形,因此您的代码可以简化为:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

Df = pd.DataFrame(np.random.randint(0,10,size=(100, 4)), columns=list('ABCD'))

Df.groupby('D').size().plot.hist()

plt.xlabel("Rows / Dataframe")
plt.ylabel("Frequency")
fig = plt.gcf()

推荐阅读