본문으로 바로가기

Python pandas의 기초에 대한 이야기를 했는데요.[바로가기] 그 후에 살짝꿍... 응용 예제 하나 적어볼까 해요^^. 사실 IPython 환경에서 Python을 사용하면서 pandas와 같은 모듈을 이용하는 건 역시 데이터를 빠르게 분석하고 이를 도식화 혹은 그래프로 표현하여 상황을 파악... 그것도 빨리~ 파악하는데 사용하는 것이 제맛이죠^^.

언제나 그렇듯 pandas를 import해야죠... 흠.. 생각해보니 numpy는 사용하지 않았는데.. 습관처럼 import 해버렸네요ㅠㅠ.

설명을 위해 임의의 화일이 하나 있다고 보죠~~ 이름은 sample1.txt입니다. 이걸 pd.read_table로 읽을 수 있습니다. 왠만한 모니터링 환경에서 저장된 raw 데이터 화일이라면 그냥 다 읽습니다.^^. 그걸 확인했더니... 뭔가 필요없는 columns가 하나 보이네요. 아마 문장의 끝을 알려주는 부분을 인식한 모양입니다. 뭐 그냥 놔둬도 상관은 없을 수 있지만... 그냥 연습삼아 columns하나 삭제해볼까요^^

일단 columns속성에서 이상한 아이를 발견했네요^^ 이름을 확인해야하니까요^^

그 아이를 drop 속성에서 axis=1을 주고 삭제 할 수 있습니다. 깔끔하네요^^

사실 raw 데이터의 index는 시간입니다. 단위는 10kHz에서 샘플링되었으니 10kHz의 역수겠지요. 그레서 time이라는 열을 만들고 시간축을 만들어 넣었습니다. 일단 rawData는 잘 건들지 않는 습관을 가지는게 이렇게 분석할때는 좋아요~~^^ 그리고 지금에서야 이야기하지만.. 위 그래프는 어떤 장치의 전류를 측정한 파일이랍니다. 그래서 인덱스를 바꿀까 하다가.. raw 데이터는 놔두고 그냥 current라는 열을 만들어봤네요^^

그리고 난 다음.. 새로운 DataFrame에 current를 넣구요... index는 time으로 지정해 주었습니다.

pandas에서 바로 plot()속성을 이용하면 그래프를 그릴 수 있습니다. 그것도 라벨에 범례(legend)까지 붙여서 말이죠^^. 참 고맙습니다.^^. 그런데 이번에는 아까 tmpRawData 상태에서 바로 그려볼께요^^

직접 x축y축을 지정할 수 있습니다. 그리고 관심있는 한 영역만 확대(xlim, ylim)하고, 이럴때는 legend가 의미가 없으니 꺼두는 거죠^^. 그나저나 저 전류가 오버슈트가 있네요..ㅠㅠ 뭐 아무튼... 오늘은 이렇게 파일로 저장된 데이터를 pandas를 이용해서 쉽게 읽어들여서 살짝 가공한 다음 아~~~주 쉽게 그래프로 표현하는 예제를 하나 보여드렸습니다.^^


댓글을 달아 주세요

  1. BlogIcon 핑구야 날자 2015.05.06 08:14 신고

    응용예제는 살짝 당황 ㅋㅋ 잘 보고 갑니다.

  2. BlogIcon 트라이어 2015.05.06 12:36 신고

    저에게는 어려워보이네요. ^^;;

  3. BlogIcon 목요일. 2015.05.06 14:14 신고

    와.. 뭔말인지 한낱범인인 저는 모르겠네요 헤헤

  4. BlogIcon 로키. 2015.05.06 14:33 신고

    음... 무슨 소리인지 잘.. ㅎㅎ

  5. BlogIcon 티나짱 2015.05.06 17:31 신고

    저도잘모르겠어요 아는분들에게는유익한정보겠죠!

  6. BlogIcon 광주랑 2015.05.06 19:33 신고

    이런 방법이 있다는건 또 처음 알았네요 ^^ 좋은 정보의 공유 감사합니다 ^^

  7. BlogIcon 스칼렛 오하라 2015.05.07 00:18 신고

    하는일 없이 바빳네요, 그간 잘 지내고 계셨죠?

  8. BlogIcon 딸기향기 2015.05.07 00:58 신고

    파이썬 너무 어려워요 ㅠㅠ 준비하는 시험만 끝나면 한번 쯤 공부하고 싶은데 PinkWink님 보면 참 대단하다 생각됩니다.

  9. BlogIcon 양군! 2015.05.07 07:26 신고

    유용한 정보에 대해서 정리를 잘해주셔서 잘 보고 가네요 ^^

  10. 광진구훈남 2015.07.15 11:41 신고

    게시글 잘보고 있습니다!!작성자분께서 시범 보이신 예제들을 저도 해보고 있는데 자꾸만 이런 Error가 뜨네요.
    뭐가 잘못된 것인지 도저히 모르겠어서 이렇게 글 올립니다..
    (에러창이 매우 기네요..죄송합니다)
    Traceback (most recent call last)
    <ipython-input-13-98ac0ae3a68c> in <module>()
    ----> 1 rawData = pd.read_table('sample.txt')
    2 rawData

    C:\Python27\pandas\io\parsers.pyc in parser_f(filepath_or_buffer, sep, dialect, compression, doublequote, escapechar, quotechar, quoting, skipinitialspace, lineterminator, header, index_col, names, prefix, skiprows, skipfooter, skip_footer, na_values, na_fvalues, true_values, false_values, delimiter, converters, dtype, usecols, engine, delim_whitespace, as_recarray, na_filter, compact_ints, use_unsigned, low_memory, buffer_lines, warn_bad_lines, error_bad_lines, keep_default_na, thousands, comment, decimal, parse_dates, keep_date_col, dayfirst, date_parser, memory_map, float_precision, nrows, iterator, chunksize, verbose, encoding, squeeze, mangle_dupe_cols, tupleize_cols, infer_datetime_format, skip_blank_lines)
    472 skip_blank_lines=skip_blank_lines)
    473
    --> 474 return _read(filepath_or_buffer, kwds)
    475
    476 parser_f.__name__ = name

    C:\Python27\pandas\io\parsers.pyc in _read(filepath_or_buffer, kwds)
    248
    249 # Create the parser.
    --> 250 parser = TextFileReader(filepath_or_buffer, **kwds)
    251
    252 if (nrows is not None) and (chunksize is not None):

    C:\Python27\pandas\io\parsers.pyc in __init__(self, f, engine, **kwds)
    564 self.options['has_index_names'] = kwds['has_index_names']
    565
    --> 566 self._make_engine(self.engine)
    567
    568 def _get_options_with_defaults(self, engine):

    C:\Python27\pandas\io\parsers.pyc in _make_engine(self, engine)
    703 def _make_engine(self, engine='c'):
    704 if engine == 'c':
    --> 705 self._engine = CParserWrapper(self.f, **self.options)
    706 else:
    707 if engine == 'python':

    C:\Python27\pandas\io\parsers.pyc in __init__(self, src, **kwds)
    1070 kwds['allow_leading_cols'] = self.index_col is not False
    1071
    -> 1072 self._reader = _parser.TextReader(src, **kwds)
    1073
    1074 # XXX

    C:\Python27\pandas\parser.pyd in pandas.parser.TextReader.__cinit__ (pandas\parser.c:3187)()

    C:\Python27\pandas\parser.pyd in pandas.parser.TextReader._setup_parser_source (pandas\parser.c:5930)()

    IOError: File sample.txt does not exist

  11. 광진구훈남 2015.07.15 16:00 신고

    네...도통 이유를 모르겠습니다..

  12. 쭈운누솔 2018.06.27 18:14 신고

    "파이썬으로 데이터 주무르기"구입해서 예제 해보려는데..시작부터 막히네요 -_-;
    import pandas as pd
    test=pd.read_csv('d:\\111.csv',encoding='uft-8')
    AttributeError: module 'pandas' has no attribute 'read_csv' 라고 뜨네요..
    구글링 해봐도 해답을 못찾아서,...답답한 마음에 댓글 남겨봅니다 ㅠ

    참고로 pd. 입력 후 함수 list에서 read_csv가 안보이네요.
    pip install pandas 해봐도 정상적으로 설치되어 있다고 나옵니다.

    • BlogIcon PinkWink 2018.06.28 14:25 신고

      흠.. 아예 pandas를 import할때 에러가 안나고 저렇게 난다는게 처음 보는 일이네요..
      conda list pandas 명령을 터미널에서 입력하고난 후의 pandas의 버전은 어떻게 되나요?