>æ»èè¨ä¹ï¼ä½ 们é½è¦åå¿ï¼å½¼æ¤ä½æ¤ï¼ç¸ç±å¦å¼å
ï¼åæ
æè°¦åçå¿ãä¸è¦ä»¥æ¶æ¥æ¶ã以辱éªè¿è¾±éªï¼åè¦ç¥ç¦ï¼å ä½ ä»¬æ¯ä¸ºæ¤èå¬ï¼å¥½å«ä½ 们æ¿åç¦æ°ãå 为ç»ä¸è¯´ï¼â人è¥ç±çå½ï¼æ¿äº«ç¾ç¦ï¼é¡»è¦ç¦æ¢è头ä¸åºæ¶è¨ï¼å´åä¸è¯´è¯¡è¯çè¯ï¼ä¹è¦ç¦»æ¶è¡åï¼å¯»æ±åç¦ï¼ä¸å¿è¿½èµ¶ãå 为主çç¼ç顾ä¹äººï¼ä¸»çè³å¬ä»ä»¬ç祷åï¼ææè¡æ¶ç人ï¼ä¸»åä»ä»¬åè¸âã(1 PTETER 3:8-12)
#Pandas使ç¨(2)
ç¹å«å读è
çå½ï¼æ¬æç¨å 为ç¯å¹
éå¶ï¼ä¸è½å°æå
³pandasçå
容å®å
¨è¯¦ç»è®²è¿°ï¼åªè½âæç å¼çâï¼å大家åä¸ä¸ªç®åä»ç»ï¼è¯´æå
¶åºæ¬ä½¿ç¨æ¹æ³ãå½è¯»è
å¨å®è·µä¸ä½¿ç¨çæ¶åï¼å¦æéå°é®é¢ï¼å¯ä»¥ç»åç¸å
³ææ¡£æè
googleæ¥è§£å³ã
##读åcsvæä»¶
###å
³äºcsvæä»¶
csvæ¯ä¸ç§éç¨çãç¸å¯¹ç®åçæä»¶æ ¼å¼ï¼å¨è¡¨æ ¼ç±»åçæ°æ®ä¸ç¨éå¾å¹¿æ³ï¼å¾å¤å
³ç³»åæ°æ®åºé½æ¯æè¿ç§ç±»åæä»¶ç导å
¥å¯¼åºï¼å¹¶ä¸excelè¿ç§å¸¸ç¨çæ°æ®è¡¨æ ¼ä¹è½åcsvæä»¶ä¹é´è½¬æ¢ã
>éå·åéå¼ï¼Comma-Separated Valuesï¼CSVï¼ææ¶ä¹ç§°ä¸ºå符åéå¼ï¼å 为åéå符ä¹å¯ä»¥ä¸æ¯éå·ï¼ï¼å
¶æä»¶ä»¥çº¯ææ¬å½¢å¼åå¨è¡¨æ ¼æ°æ®ï¼æ°ååææ¬ï¼ãçº¯ææ¬æå³ç该æä»¶æ¯ä¸ä¸ªå符åºåï¼ä¸å«å¿
须象äºè¿å¶æ°å飿 ·è¢«è§£è¯»çæ°æ®ãCSVæä»¶ç±ä»»ææ°ç®çè®°å½ç»æï¼è®°å½é´ä»¥æç§æ¢è¡ç¬¦åéï¼æ¯æ¡è®°å½ç±åæ®µç»æï¼å段é´çåé符æ¯å
¶å®å符æåç¬¦ä¸²ï¼æå¸¸è§çæ¯éå·æå¶è¡¨ç¬¦ãéå¸¸ï¼ææè®°å½é½æå®å
¨ç¸åçåæ®µåºåã
ä»ä¸è¿°ç»´åºç¾ç§çåè¿°ä¸ï¼éç¹è¦è§£è¯»åºâåæ®µé´åé符ââæå¸¸è§çæ¯éå·æå¶è¡¨ç¬¦âï¼å½ç¶ï¼è¿ç§åé符ä¹å¯ä»¥èªè¡å¶å®ãæ¯å¦ä¸é¢è¿ä¸ªæå½å为marks.csvçæä»¶ï¼å°±æ¯ç¨éå·ï¼å¿
é¡»æ¯åè§çï¼ä½ä¸ºåé符ï¼
name,physics,python,math,english
Google,100,100,25,12
Facebook,45,54,44,88
Twitter,54,76,13,91
Yahoo,54,452,26,100
å
¶å®ï¼è¿ä¸ªæä»¶è¦è¡¨è¾¾çäºæ
æ¯ï¼å¦æè½¬åä¸ºè¡¨æ ¼å½¢å¼ï¼ï¼

###æ®éæ¹æ³è¯»å
æç®åãæç´æ¥çå°±æ¯open()æå¼æä»¶ï¼
>>> with open("./marks.csv") as f:
... for line in f:
... print line
...
name,physics,python,math,english
Google,100,100,25,12
Facebook,45,54,44,88
Twitter,54,76,13,91
Yahoo,54,452,26,100
æ¤æ¹æ³å¯ä»¥ï¼ä½ç¥æ¾éº»ç¦ã
pythonä¸è¿æä¸ä¸ªcsvçæ ååºï¼è¶³å¯è§csvæä»¶ç使ç¨é¢ç¹äºã
>>> import csv
>>> dir(csv)
['Dialect', 'DictReader', 'DictWriter', 'Error', 'QUOTE_ALL', 'QUOTE_MINIMAL', 'QUOTE_NONE', 'QUOTE_NONNUMERIC', 'Sniffer', 'StringIO', '_Dialect', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__version__', 'excel', 'excel_tab', 'field_size_limit', 'get_dialect', 'list_dialects', 're', 'reader', 'reduce', 'register_dialect', 'unregister_dialect', 'writer']
ä»ä¹æ¶åä¹ä¸è¦å¿è®°è¿ç§æä½³å¦ä¹ æ¹æ³ãä»ä¸é¢ç»æå¯ä»¥çåºï¼csv模åæä¾ç屿§åæ¹æ³ãä»
ä»
å°±è¯»åæ¬ä¾åä¸çæä»¶ï¼
>>> import csv
>>> csv_reader = csv.reader(open("./marks.csv"))
>>> for row in csv_reader:
... print row
...
['name', 'physics', 'python', 'math', 'english']
['Google', '100', '100', '25', '12']
['Facebook', '45', '54', '44', '88']
['Twitter', '54', '76', '13', '91']
['Yahoo', '54', '452', '26', '100']
ç®æ¯ç¨ææ¹åã
###ç¨Pandas读å
妿坹ä¸é¢çç»æé½æç¹ä¸æ»¡æçè¯ï¼é£ä¹ççPandasçææï¼
>>> import pandas as pd
>>> marks = pd.read_csv("./marks.csv")
>>> marks
name physics python math english
0 Google 100 100 25 12
1 Facebook 45 54 44 88
2 Twitter 54 76 13 91
3 Yahoo 54 452 26 100
çäºè¿æ ·çç»æï¼ä½ è¿ä¸æè§æè®¶åï¼ä½ è¿ä¸å欢ä¸Pandasåï¼è¿æ¯å¤ä¹ç²¾å¦çæ¾ç¤ºã宿¯ä»ä¹ï¼å®å°±æ¯ä¸ä¸ªDataFrameæ°æ®ã
è¿æå¦å¤ä¸ç§æ¹æ³ï¼
>>> pd.read_table("./marks.csv", sep=",")
name physics python math english
0 Google 100 100 25 12
1 Facebook 45 54 44 88
2 Twitter 54 76 13 91
3 Yahoo 54 452 26 100
å¦æä½ æè¶³å¤ç好å¥å¿æ¥ç ç©¶è¿ä¸ªåå«DataFrameç对象ï¼å¯ä»¥è¿æ ·ï¼
>>> dir(marks)
['T', '_AXIS_ALIASES', '_AXIS_NAMES', '_AXIS_NUMBERS', '__add__', '__and__', '__array__', '__array_wrap__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__div__', '__doc__', '__eq__', '__floordiv__', '__format__', '__ge__', '__getattr__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', '__ne__', '__neg__', '__new__', '__nonzero__', '__or__', '__pow__', '__radd__', '__rdiv__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmul__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__setitem__', '__setstate__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__weakref__', '__xor__', '_agg_by_level', '_align_frame', '_align_series', '_apply_broadcast', '_apply_raw', '_apply_standard', '_auto_consolidate', '_bar_plot', '_boolean_set', '_box_item_values', '_clear_item_cache', '_combine_const', '_combine_frame', '_combine_match_columns', '_combine_match_index', '_combine_series', '_combine_series_infer', '_compare_frame', '_consolidate_inplace', '_constructor', '_count_level', '_cov_helper', '_data', '_default_stat_axis', '_expand_axes', '_from_axes', '_get_agg_axis', '_get_axis', '_get_axis_name', '_get_axis_number', '_get_item_cache', '_get_numeric_data', '_getitem_array', '_getitem_multilevel', '_helper_csvexcel', '_het_axis', '_indexed_same', '_init_dict', '_init_mgr', '_init_ndarray', '_is_mixed_type', '_item_cache', '_ix', '_join_compat', '_reduce', '_reindex_axis', '_reindex_columns', '_reindex_index', '_reindex_with_indexers', '_rename_columns_inplace', '_rename_index_inplace', '_sanitize_column', '_series', '_set_axis', '_set_item', '_set_item_multiple', '_shift_indexer', '_slice', '_unpickle_frame_compat', '_unpickle_matrix_compat', '_verbose_info', '_wrap_array', 'abs', 'add', 'add_prefix', 'add_suffix', 'align', 'append', 'apply', 'applymap', 'as_matrix', 'asfreq', 'astype', 'axes', 'boxplot', 'clip', 'clip_lower', 'clip_upper', 'columns', 'combine', 'combineAdd', 'combineMult', 'combine_first', 'consolidate', 'convert_objects', 'copy', 'corr', 'corrwith', 'count', 'cov', 'cummax', 'cummin', 'cumprod', 'cumsum', 'delevel', 'describe', 'diff', 'div', 'dot', 'drop', 'drop_duplicates', 'dropna', 'dtypes', 'duplicated', 'fillna', 'filter', 'first_valid_index', 'from_csv', 'from_dict', 'from_items', 'from_records', 'get', 'get_dtype_counts', 'get_value', 'groupby', 'head', 'hist', 'icol', 'idxmax', 'idxmin', 'iget_value', 'index', 'info', 'insert', 'irow', 'iteritems', 'iterkv', 'iterrows', 'ix', 'join', 'last_valid_index', 'load', 'lookup', 'mad', 'max', 'mean', 'median', 'merge', 'min', 'mul', 'ndim', 'pivot', 'pivot_table', 'plot', 'pop', 'prod', 'product', 'quantile', 'radd', 'rank', 'rdiv', 'reindex', 'reindex_axis', 'reindex_like', 'rename', 'rename_axis', 'reorder_levels', 'reset_index', 'rmul', 'rsub', 'save', 'select', 'set_index', 'set_value', 'shape', 'shift', 'skew', 'sort', 'sort_index', 'sortlevel', 'stack', 'std', 'sub', 'sum', 'swaplevel', 'tail', 'take', 'to_csv', 'to_dict', 'to_excel', 'to_html', 'to_panel', 'to_records', 'to_sparse', 'to_string', 'to_wide', 'transpose', 'truncate', 'unstack', 'values', 'var', 'xs']
ä¸ä¸ªä¸ä¸ªæµè§ä¸ä¸ï¼éè¿ååå¯ä»¥ç´å°é£ä¸ªæ¹æ³æè
屿§ç大æ¦ï¼ç¶åå°±å¯ä»¥æ ¹æ®ä½ çå好åéè¦ï¼è¯ä¸è¯ï¼
>>> marks.index
Int64Index([0, 1, 2, 3], dtype=int64)
>>> marks.columns
Index([name, physics, python, math, english], dtype=object)
>>> marks['name'][1]
'Facebook'
è¿å 个æ¯è®©ä½ åå¿ä¸ä¸ä¸ä¸èçãä»DataFrame对象ç屿§åæ¹æ³ä¸æ¾ä¸ä¸ªï¼åå°è¯ï¼
>>> marks.sort(column="python")
name physics python math english
1 Facebook 45 54 44 88
2 Twitter 54 76 13 91
0 Google 100 100 25 12
3 Yahoo 54 452 26 100
æç
§ç«å"python"ç弿éï¼ç»æä¹æ¯å¾è®©äººæ»¡æçãä¸é¢å 个æä½ï¼ä¹æ¯å¸¸ç¨å°çï¼å¹¶ä¸ç§æ¿äºpythonçä¸è´¯æ¹æ³ï¼
>>> marks[:1]
name physics python math english
0 Google 100 100 25 12
>>> marks[1:2]
name physics python math english
1 Facebook 45 54 44 88
>>> marks["physics"]
0 100
1 45
2 54
3 54
Name: physics
å¯ä»¥è¯´ï¼å½ä½ å·²ç»ææ¡äºéè¿dir()åhelp()æ¥çå¯¹è±¡çæ¹æ³å屿§æ¶ï¼å°±å·²ç»ææ¡äºpandasçç¨æ³ï¼å
¶å®ä½æ¢pandasï¼å
¶å®å¯¹è±¡é½æ¯å¦æ¤ã
##读åå
¶å®æ ¼å¼æ°æ®
csvæ¯å¸¸ç¨æ¥å卿°æ®çæ ¼å¼ä¹ä¸ï¼æ¤å¤å¸¸ç¨çè¿æMS excelæ ¼å¼çæä»¶ï¼ä»¥åjsonåxmlæ ¼å¼çæ°æ®çãå®ä»¬é½å¯ä»¥ä½¿ç¨pandasæ¥è½»æè¯»åã
###.xlsæè
.xlsx
å¨ä¸é¢çç»æä¸å¯»è§
ä¸ä¸ï¼ææ²¡æè·excelæå
³çæ¹æ³ï¼
>>> dir(pd)
['DataFrame', 'DataMatrix', 'DateOffset', 'DateRange', 'ExcelFile', 'ExcelWriter', 'Factor', 'HDFStore', 'Index', 'Int64Index', 'MultiIndex', 'Panel', 'Series', 'SparseArray', 'SparseDataFrame', 'SparseList', 'SparsePanel', 'SparseSeries', 'SparseTimeSeries', 'TimeSeries', 'WidePanel', '__builtins__', '__doc__', '__docformat__', '__file__', '__name__', '__package__', '__path__', '__version__', '_engines', '_sparse', '_tseries', 'concat', 'core', 'crosstab', 'datetime', 'datetools', 'debug', 'ewma', 'ewmcorr', 'ewmcov', 'ewmstd', 'ewmvar', 'ewmvol', 'fama_macbeth', 'groupby', 'info', 'io', 'isnull', 'lib', 'load', 'merge', 'notnull', 'np', 'ols', 'pivot', 'pivot_table', 'read_clipboard', 'read_csv', 'read_table', 'reset_printoptions', 'rolling_apply', 'rolling_corr', 'rolling_corr_pairwise', 'rolling_count', 'rolling_cov', 'rolling_kurt', 'rolling_max', 'rolling_mean', 'rolling_median', 'rolling_min', 'rolling_quantile', 'rolling_skew', 'rolling_std', 'rolling_sum', 'rolling_var', 'save', 'set_eng_float_format', 'set_printoptions', 'sparse', 'stats', 'tools', 'util', 'value_range', 'version']
è½ç¶æ²¡æç±»ä¼¼`read_csv()`çæ¹æ³ï¼å¨ç½ä¸æ¥è¯¢ï¼æçèµæè¯´æ`read_xls()`æ¹æ³ï¼é£æ¶èé»åäºï¼ï¼ä½æ¯æ`ExcelFile`ç±»ï¼äºæ¯ä¹ï¼
>>> xls = pd.ExcelFile("./marks.xlsx")
Traceback (most recent call last):
File "