2016-09-16 3 views
1

1000 개가 넘는 데이터 열이있는 xlsx 파일이 있습니다. 먼저 데이터 파일 (숫자와 문자를 포함 할 수 있음)에서 매 두 번째 열을 구문 분석하고 파싱 된 데이터에서 고유 한 목록을 만들고 싶습니다.팬더를 사용하여 고유 목록 만들기

나는 완전한 멍청이이다. &은 "for"와 "do while"루프를 시도했지만 나에게 효과가 없다.

지금까지 내가 가진 :

import pandas as pd 
    workbook = pd.read_excel('C:\Python27\Scripts\Data.xlsx') 
    worksheet = workbook.sheetname='Data' 

    for col in range(worksheet[0], worksheet[1300]): 
     print(col) 

내가 그때 텍스트 파일의 고유 목록을 만들 데이터를 추가하고 어쩌면 텍스트 파일에 기록 할 필요가 있다고 생각 - 나는 그냥 점점 두 번째 부분을 수행 할 수 있습니다 텍스트 파일에 문제가 있습니다.

감사

+0

죄송합니다. 두 번째 열이 두 번째 열 또는 모든 짝수 열을 의미한다고 생각하십니까? 또한 일부 글로벌 목록이나 열마다 목록을 원하십니까? 또한 ['unique'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.png.Series.unique)를 보셨습니까? – EdChum

+0

에드 감사합니다. 모든 짝수 칼럼 - 0,2,4,6,8 등 또는 A, C, E, G, AWK까지 있습니다. 전체적으로 1286 개의 열이 있으므로 643 개의 목록을 만들고 그 목록에서 고유 한 목록을 만들고 싶습니다. 분명히 pandas.series.unique()를 사용할 것이지만 643 개의 열을 하나의 목록으로 가져 오는 방법을 확신 할 수 없습니다. –

답변

2

당신은 슬라이스와 단계를 사용하여 열을 반복 할 수 있습니다 인수 즉 df.ix[:, ::2] 여기

In [35]: 
df = pd.DataFrame({'a':1, 'b':[1,2,3,4,5], 'c':[2,3,4,5,6], 'd':0,'e':np.random.randn(5)}) 
df 

Out[35]: 
    a b c d   e 
0 1 1 2 0 -0.352310 
1 1 2 3 0 1.189140 
2 1 3 4 0 -1.470507 
3 1 4 5 0 0.742709 
4 1 5 6 0 -2.798007 

우리는 모든 2 열 단계 : 우리가 후 바로 호출 할 수 있습니다

In [37]: 
df.ix[:,::2] 

Out[37]: 
    a c   e 
0 1 2 -0.352310 
1 1 3 1.189140 
2 1 4 -1.470507 
3 1 5 0.742709 
4 1 6 -2.798007 

np.unique을 전체 df에 적용하여 모든 고유 값의 단일 배열을 얻습니다.

In [36]: 
np.unique(df.ix[:,::2]) 

Out[36]: 
array([-2.79800676, -1.47050675, -0.35231005, 0.74270934, 1.  , 
     1.18914011, 2.  , 3.  , 4.  , 5.  , 6.  ]) 
+0

아주 좋습니다. 일반적으로'numpy' 함수를 호출 할 때'as_matrix'를 호출 할 필요가 없습니까? 나는 이것을하지 않으면 "sklearn"이 화가났다는 것을 막연하게 기억한다. –

+0

@AmiTavory 데이터 항목으로 dfs와 series를 다루는 데있어서 sklearn이 훨씬 좋았지 만 꽤 자주 df.values를 넘겼습니다. np는 데이터 프레임과 잘 어울린다고 생각합니다. 'np'가'__array__' 속성을 올바르게 호출하지 못했지만 최근에 자주 발생하지 않았습니다. – EdChum

+0

감사합니다. 거의 다 왔어. 나는 여전히 인쇄 할 때 모든 데이터를 다시 얻는 것 같다 : df.ix [:, :: 2]. np.unique()는 여전히 작동해야합니다. 맞습니까? –

관련 문제