Таблица частот с неорганизованными данными, сделанными пандами - PullRequest
0 голосов
/ 18 октября 2019

У меня есть архив Excel с разными номерами, и я открываю его с помощью панд. когда я читаю и затем печатаю архив xslx, у меня появляется что-то вроде этого:

    5    7    7    
0   6    16   5    
1   10   12   15   
2   1    5    6    
3   5    6    18   
.   .    .    .    
.   .    .    .    
n   .    .    n   

Все, что мне нужно, - это распределять их с разными интервалами в соответствии с их частотами.

мой код

import pandas as pd
excel_archive=pd.read_exceL("file name")
print(excel)

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Я думаю, что файл Excel не имеет заголовка, поэтому сначала добавьте header=None к read_excel, а затем используйте DataFrame.stack с Series.value_counts:

excel_archive=pd.read_exceL("file name", header=None)
s = excel_archive.stack().value_counts()
print (s)
5     4
6     3
7     2
15    1
12    1
10    1
18    1
1     1
16    1
dtype: int64
0 голосов
/ 18 октября 2019

Ваш вопрос не очень понятен, но если вам просто нужно подсчитать количество вхождений, вы можете попробовать что-то вроде этого:

#generate a dataframe
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 4], [7, 8, 9], [1, 5, 2], [7, 9, 9]]),columns=['a', 'b', 'c'])

#Flatten the array
df_flat=df.stack().reset_index(drop=True)

#Count the number of occurences
df_flat.groupby(df_flat).size()

Это ввод:

   a  b  c
0  1  2  3
1  4  5  4
2  7  8  9
3  1  5  2
4  7  9  9

И это вывод:

1    2
2    2
3    1
4    2
5    2
7    2
8    1
9    3

Если вы хотите вместо этого разделить на несколько предопределенных интервалов, вы можете использовать pd.cut вместе с groupby:

#define intervals
intervals = pd.IntervalIndex.from_arrays([0,3,6],[3,6,9],closed='right')
#cut and groupby
df_flat.groupby(pd.cut(df_flat,intervals)).size()

, и результат будетбыть:

(0, 3]    5
(3, 6]    4
(6, 9]    6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...