精华内容
下载资源
问答
  • pandas用法总结

    万次阅读 多人点赞 2018-06-07 10:49:03
    1、首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: import numpy as np import pandas as pd 2、导入CSV或者xlsx文件: df = pd.DataFrame(pd.read_csv(‘name.csv’,header=1)) df = pd....

    一、生成数据表

    各位读者朋友们,由于更新blog不易,如果觉得这篇blog对你有用的话,麻烦关注,点赞,收藏一下哈,十分感谢。

    1、首先导入pandas库,一般都会用到numpy库,所以我们先导入备用:

    import numpy as np
    import pandas as pd
    

    2、导入CSV或者xlsx文件:

    df = pd.DataFrame(pd.read_csv('name.csv',header=1))
    df = pd.DataFrame(pd.read_excel('name.xlsx'))
    

    或者

    import pandas as pd
    from collections import namedtuple
    
    Item = namedtuple('Item', 'reply pv')
    items = []
    
    with codecs.open('reply.pv.07', 'r', 'utf-8') as f: 
        for line in f:
            line_split = line.strip().split('\t')
            items.append(Item(line_split[0].strip(), line_split[1].strip()))
    
    df = pd.DataFrame.from_records(items, columns=['reply', 'pv'])
    

    3、用pandas创建数据表:

    df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006], 
     "date":pd.date_range('20130102', periods=6),
      "city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
     "age":[23,44,54,32,34,32],
     "category":['100-A','100-B','110-A','110-C','210-A','130-F'],
      "price":[1200,np.nan,2133,5433,np.nan,4432]},
      columns =['id','date','city','category','age','price'])
    

    二、数据表信息查看

    1、维度查看:

    df.shape
    

    2、数据表基本信息(维度、列名称、数据格式、所占空间等):

    df.info()
    

    3、每一列数据的格式:

    df.dtypes
    

    4、某一列格式:

    df['B'].dtype
    

    5、空值:

    df.isnull()
    

    6、查看某一列空值:

    df['B'].isnull()
    

    7、查看某一列的唯一值:

    df['B'].unique()
    

    8、查看数据表的值:

    df.values 
    

    9、查看列名称:

    df.columns
    

    10、查看前5行数据、后5行数据:

    df.head() #默认前5行数据
    df.tail()    #默认后5行数据
    

    三、数据表清洗

    1、用数字0填充空值:

    df.fillna(value=0)
    

    2、使用列prince的均值对NA进行填充:

    df['prince'].fillna(df['prince'].mean())
    

    3、清楚city字段的字符空格:

    df['city']=df['city'].map(str.strip)
    

    4、大小写转换:

    df['city']=df['city'].str.lower()
    

    5、更改数据格式:

    df['price'].astype('int')       
    

    6、更改列名称:

    df.rename(columns={'category': 'category-size'}) 
    

    7、删除后出现的重复值:

    df['city'].drop_duplicates()
    

    8 、删除先出现的重复值:

    df['city'].drop_duplicates(keep='last')
    

    9、数据替换:

    df['city'].replace('sh', 'shanghai')
    

    四、数据预处理

    df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008], 
    "gender":['male','female','male','female','male','female','male','female'],
    "pay":['Y','N','Y','Y','N','Y','N','Y',],
    "m-point":[10,12,20,40,40,40,30,20]})
    

    1、数据表合并

    1.1 merge

    df_inner=pd.merge(df,df1,how='inner')  # 匹配合并,交集
    df_left=pd.merge(df,df1,how='left')        #
    df_right=pd.merge(df,df1,how='right')
    df_outer=pd.merge(df,df1,how='outer')  #并集
    

    1.2 append

    result = df1.append(df2)
    

    这里写图片描述

    1.3 join

    result = left.join(right, on='key')
    

    这里写图片描述

    1.4 concat

    pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
    	          keys=None, levels=None, names=None, verify_integrity=False,
    	          copy=True)
    
    • objs︰ 一个序列或系列、 综合或面板对象的映射。如果字典中传递,将作为键参数,使用排序的键,除非它传递,在这种情况下的值将会选择
      (见下文)。任何没有任何反对将默默地被丢弃,除非他们都没有在这种情况下将引发 ValueError。
    • axis: {0,1,…},默认值为 0。要连接沿轴。
    • join: {‘内部’、 ‘外’},默认 ‘外’。如何处理其他 axis(es) 上的索引。联盟内、 外的交叉口。
    • ignore_index︰ 布尔值、 默认 False。如果为 True,则不要串联轴上使用的索引值。由此产生的轴将标记
      0,…,n-1。这是有用的如果你串联串联轴没有有意义的索引信息的对象。请注意在联接中仍然受到尊重的其他轴上的索引值。
    • join_axes︰ 索引对象的列表。具体的指标,用于其他 n-1 轴而不是执行内部/外部设置逻辑。 keys︰
      序列,默认为无。构建分层索引使用通过的键作为最外面的级别。如果多个级别获得通过,应包含元组。
    • levels︰ 列表的序列,默认为无。具体水平 (唯一值) 用于构建多重。否则,他们将推断钥匙。
    • names︰ 列表中,默认为无。由此产生的分层索引中的级的名称。
    • verify_integrity︰ 布尔值、 默认 False。检查是否新的串联的轴包含重复项。这可以是相对于实际数据串联非常昂贵。
    • 副本︰ 布尔值、 默认 True。如果为 False,请不要,不必要地复制数据。
    例子:1.frames = [df1, df2, df3]
              2.result = pd.concat(frames)
    

    这里写图片描述

    2、设置索引列

    df_inner.set_index('id')
    

    3、按照特定列的值排序:

    df_inner.sort_values(by=['age'])
    

    4、按照索引列排序:

    df_inner.sort_index()
    

    5、如果prince列的值>3000,group列显示high,否则显示low:

    df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')
    

    6、对复合多个条件的数据进行分组标记

    df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign']=1
    

    7、对category字段的值依次进行分列,并创建数据表,索引值为df_inner的索引列,列名称为category和size

    pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size']))
    

    8、将完成分裂后的数据表和原df_inner数据表进行匹配

    df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)
    

    五、数据提取

    主要用到的三个函数:loc,iloc和ix,loc函数按标签值进行提取,iloc按位置进行提取,ix可以同时按标签和位置进行提取。

    1、按索引提取单行的数值

    df_inner.loc[3]
    

    2、按索引提取区域行数值

    df_inner.iloc[0:5]
    

    3、重设索引

    df_inner.reset_index()
    

    4、设置日期为索引

    df_inner=df_inner.set_index('date') 
    

    5、提取4日之前的所有数据

    df_inner[:'2013-01-04']
    

    6、使用iloc按位置区域提取数据

    df_inner.iloc[:3,:2] #冒号前后的数字不再是索引的标签名称,而是数据所在的位置,从0开始,前三行,前两列。
    

    7、适应iloc按位置单独提起数据

    df_inner.iloc[[0,2,5],[4,5]] #提取第0、2、5行,4、5列
    

    8、使用ix按索引标签和位置混合提取数据

    df_inner.ix[:'2013-01-03',:4] #2013-01-03号之前,前四列数据
    

    9、判断city列的值是否为北京

    df_inner['city'].isin(['beijing'])
    

    10、判断city列里是否包含beijing和shanghai,然后将符合条件的数据提取出来

    df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])] 
    

    11、提取前三个字符,并生成数据表

    pd.DataFrame(category.str[:3])
    

    六、数据筛选

    使用与、或、非三个条件配合大于、小于、等于对数据进行筛选,并进行计数和求和。

    1、使用“与”进行筛选

    df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']]
    

    2、使用“或”进行筛选

    df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']].sort(['age']) 
    

    3、使用“非”条件进行筛选

    df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']) 
    

    4、对筛选后的数据按city列进行计数

    df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']).city.count()
    

    5、使用query函数进行筛选

    df_inner.query('city == ["beijing", "shanghai"]')
    

    6、对筛选后的结果按prince进行求和

    df_inner.query('city == ["beijing", "shanghai"]').price.sum()
    

    七、数据汇总

    主要函数是groupby和pivote_table

    1、对所有的列进行计数汇总

    df_inner.groupby('city').count()
    

    2、按城市对id字段进行计数

    df_inner.groupby('city')['id'].count()
    

    3、对两个字段进行汇总计数

    df_inner.groupby(['city','size'])['id'].count()
    

    4、对city字段进行汇总,并分别计算prince的合计和均值

    df_inner.groupby('city')['price'].agg([len,np.sum, np.mean]) 
    

    八、数据统计

    数据采样,计算标准差,协方差和相关系数

    1、简单的数据采样

    df_inner.sample(n=3) 
    

    2、手动设置采样权重

    weights = [0, 0, 0, 0, 0.5, 0.5]
    df_inner.sample(n=2, weights=weights) 
    

    3、采样后不放回

    df_inner.sample(n=6, replace=False) 
    

    4、采样后放回

    df_inner.sample(n=6, replace=True)
    

    5、 数据表描述性统计

    df_inner.describe().round(2).T #round函数设置显示小数位,T表示转置
    

    6、计算列的标准差

    df_inner['price'].std()
    

    7、计算两个字段间的协方差

    df_inner['price'].cov(df_inner['m-point']) 
    

    8、数据表中所有字段间的协方差

    df_inner.cov()
    

    9、两个字段的相关性分析

    df_inner['price'].corr(df_inner['m-point']) #相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关
    

    10、数据表的相关性分析

    df_inner.corr()
    

    九、数据输出

    分析后的数据可以输出为xlsx格式和csv格式

    1、写入Excel

    df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc') 
    

    2、写入到CSV

    df_inner.to_csv('excel_to_python.csv') 
    
    展开全文
  • I have a CSV file with the following categories: item1,item2,item3,item4 which values is exactly one of the following: 0,1,2,3,4.I would like to count for each items how many are there for each value....

    I have a CSV file with the following categories: item1,item2,item3,item4 which values is exactly one of the following: 0,1,2,3,4.

    I would like to count for each items how many are there for each value.

    My code is the following, df being the corresponding DataFrame:

    outputDf = pandas.DataFrame()

    cat_list = list(df.columns.values)

    for col in cat_list:

    s = df.groupby(col).size()

    outputDf[col] = s

    I would like to do exactly the same using the chunksize parameter when I read my CSV with read_csv, because my CSV is very big.

    My problem is: I can't find a way to find the cat_list, neither to build the outputDf.

    Can someone give me a hint?

    解决方案

    I'd apply value_counts columnwise rather than doing groupby:

    >>> df = pd.read_csv("basic.csv", usecols=["item1", "item2", "item3", "item4"])

    >>> df.apply(pd.value_counts)

    item1 item2 item3 item4

    0 17 26 17 20

    1 21 21 22 19

    2 17 18 22 23

    3 24 14 20 24

    4 21 21 19 14

    And for the chunked version, we just need to assemble the parts (making sure to fillna(0) so that if a part doesn't have a 3, for example, we get 0 and not nan.)

    >>> df_iter = pd.read_csv("basic.csv", usecols=["item1", "item2", "item3", "item4"], chunksize=10)

    >>> sum(c.apply(pd.value_counts).fillna(0) for c in df_iter)

    item1 item2 item3 item4

    0 17 26 17 20

    1 21 21 22 19

    2 17 18 22 23

    3 24 14 20 24

    4 21 21 19 14

    (Of course, in practice you'd probably want to use as large a chunksize as you can get away with.)

    展开全文
  • 有时候DataFrame的行列数量太多,print打印出来会显示不完全。就像下图这样: 列显示不全: 行显示不全: 添加如下代码,即可解决。 #显示所有列 pd.set_option('display.max_...

    有时候DataFrame中的行列数量太多,print打印出来会显示不完全。就像下图这样:

    列显示不全:

    这里写图片描述

    行显示不全:

    这里写图片描述

    添加如下代码,即可解决。

    #显示所有列
    pd.set_option('display.max_columns', None)
    #显示所有行
    pd.set_option('display.max_rows', None)
    #设置value的显示长度为100,默认为50
    pd.set_option('max_colwidth',100)
    

    根据自己的需要更改相应的设置即可。

    ps:set_option()的所有属性:

    Available options:
    
    - display.[chop_threshold, colheader_justify, column_space, date_dayfirst,
      date_yearfirst, encoding, expand_frame_repr, float_format, height, large_repr]
    - display.latex.[escape, longtable, repr]
    - display.[line_width, max_categories, max_columns, max_colwidth,
      max_info_columns, max_info_rows, max_rows, max_seq_items, memory_usage,
      mpl_style, multi_sparse, notebook_repr_html, pprint_nest_depth, precision,
      show_dimensions]
    - display.unicode.[ambiguous_as_wide, east_asian_width]
    - display.[width]
    - io.excel.xls.[writer]
    - io.excel.xlsm.[writer]
    - io.excel.xlsx.[writer]
    - io.hdf.[default_format, dropna_table]
    - mode.[chained_assignment, sim_interactive, use_inf_as_null]
    
    Parameters
    ----------
    pat : str
        Regexp which should match a single option.
        Note: partial matches are supported for convenience, but unless you use the
        full option name (e.g. x.y.z.option_name), your code may break in future
        versions if new options with similar names are introduced.
    value :
        new value of option.
    
    Returns
    -------
    None
    
    Raises
    ------
    OptionError if no such option exists
    
    Notes
    -----
    The available options with its descriptions:
    
    display.chop_threshold : float or None
        if set to a float value, all float values smaller then the given threshold
        will be displayed as exactly 0 by repr and friends.
        [default: None] [currently: None]
    
    display.colheader_justify : 'left'/'right'
        Controls the justification of column headers. used by DataFrameFormatter.
        [default: right] [currently: right]
    
    display.column_space No description available.
        [default: 12] [currently: 12]
    
    display.date_dayfirst : boolean
        When True, prints and parses dates with the day first, eg 20/01/2005
        [default: False] [currently: False]
    
    display.date_yearfirst : boolean
        When True, prints and parses dates with the year first, eg 2005/01/20
        [default: False] [currently: False]
    
    display.encoding : str/unicode
        Defaults to the detected encoding of the console.
        Specifies the encoding to be used for strings returned by to_string,
        these are generally strings meant to be displayed on the console.
        [default: UTF-8] [currently: UTF-8]
    
    display.expand_frame_repr : boolean
        Whether to print out the full DataFrame repr for wide DataFrames across
        multiple lines, `max_columns` is still respected, but the output will
        wrap-around across multiple "pages" if its width exceeds `display.width`.
        [default: True] [currently: True]
    
    display.float_format : callable
        The callable should accept a floating point number and return
        a string with the desired format of the number. This is used
        in some places like SeriesFormatter.
        See formats.format.EngFormatter for an example.
        [default: None] [currently: None]
    
    display.height : int
        Deprecated.
        [default: 60] [currently: 60]
        (Deprecated, use `display.max_rows` instead.)
    
    display.large_repr : 'truncate'/'info'
        For DataFrames exceeding max_rows/max_cols, the repr (and HTML repr) can
        show a truncated table (the default from 0.13), or switch to the view from
        df.info() (the behaviour in earlier versions of pandas).
        [default: truncate] [currently: truncate]
    
    display.latex.escape : bool
        This specifies if the to_latex method of a Dataframe uses escapes special
        characters.
        method. Valid values: False,True
        [default: True] [currently: True]
    
    display.latex.longtable :bool
        This specifies if the to_latex method of a Dataframe uses the longtable
        format.
        method. Valid values: False,True
        [default: False] [currently: False]
    
    display.latex.repr : boolean
        Whether to produce a latex DataFrame representation for jupyter
        environments that support it.
        (default: False)
        [default: False] [currently: False]
    
    display.line_width : int
        Deprecated.
        [default: 80] [currently: 80]
        (Deprecated, use `display.width` instead.)
    
    display.max_categories : int
        This sets the maximum number of categories pandas should output when
        printing out a `Categorical` or a Series of dtype "category".
        [default: 8] [currently: 8]
    
    display.max_columns : int
        If max_cols is exceeded, switch to truncate view. Depending on
        `large_repr`, objects are either centrally truncated or printed as
        a summary view. 'None' value means unlimited.
    
        In case python/IPython is running in a terminal and `large_repr`
        equals 'truncate' this can be set to 0 and pandas will auto-detect
        the width of the terminal and print a truncated object which fits
        the screen width. The IPython notebook, IPython qtconsole, or IDLE
        do not run in a terminal and hence it is not possible to do
        correct auto-detection.
        [default: 20] [currently: 20]
    
    display.max_colwidth : int
        The maximum width in characters of a column in the repr of
        a pandas data structure. When the column overflows, a "..."
        placeholder is embedded in the output.
        [default: 50] [currently: 200]
    
    display.max_info_columns : int
        max_info_columns is used in DataFrame.info method to decide if
        per column information will be printed.
        [default: 100] [currently: 100]
    
    display.max_info_rows : int or None
        df.info() will usually show null-counts for each column.
        For large frames this can be quite slow. max_info_rows and max_info_cols
        limit this null check only to frames with smaller dimensions than
        specified.
        [default: 1690785] [currently: 1690785]
    
    display.max_rows : int
        If max_rows is exceeded, switch to truncate view. Depending on
        `large_repr`, objects are either centrally truncated or printed as
        a summary view. 'None' value means unlimited.
    
        In case python/IPython is running in a terminal and `large_repr`
        equals 'truncate' this can be set to 0 and pandas will auto-detect
        the height of the terminal and print a truncated object which fits
        the screen height. The IPython notebook, IPython qtconsole, or
        IDLE do not run in a terminal and hence it is not possible to do
        correct auto-detection.
        [default: 60] [currently: 60]
    
    display.max_seq_items : int or None
        when pretty-printing a long sequence, no more then `max_seq_items`
        will be printed. If items are omitted, they will be denoted by the
        addition of "..." to the resulting string.
    
        If set to None, the number of items to be printed is unlimited.
        [default: 100] [currently: 100]
    
    display.memory_usage : bool, string or None
        This specifies if the memory usage of a DataFrame should be displayed when
        df.info() is called. Valid values True,False,'deep'
        [default: True] [currently: True]
    
    display.mpl_style : bool
        Setting this to 'default' will modify the rcParams used by matplotlib
        to give plots a more pleasing visual style by default.
        Setting this to None/False restores the values to their initial value.
        [default: None] [currently: None]
    
    display.multi_sparse : boolean
        "sparsify" MultiIndex display (don't display repeated
        elements in outer levels within groups)
        [default: True] [currently: True]
    
    display.notebook_repr_html : boolean
        When True, IPython notebook will use html representation for
        pandas objects (if it is available).
        [default: True] [currently: True]
    
    display.pprint_nest_depth : int
        Controls the number of nested levels to process when pretty-printing
        [default: 3] [currently: 3]
    
    display.precision : int
        Floating point output precision (number of significant digits). This is
        only a suggestion
        [default: 6] [currently: 6]
    
    display.show_dimensions : boolean or 'truncate'
        Whether to print out dimensions at the end of DataFrame repr.
        If 'truncate' is specified, only print out the dimensions if the
        frame is truncated (e.g. not display all rows and/or columns)
        [default: truncate] [currently: truncate]
    
    display.unicode.ambiguous_as_wide : boolean
        Whether to use the Unicode East Asian Width to calculate the display text
        width.
        Enabling this may affect to the performance (default: False)
        [default: False] [currently: False]
    
    display.unicode.east_asian_width : boolean
        Whether to use the Unicode East Asian Width to calculate the display text
        width.
        Enabling this may affect to the performance (default: False)
        [default: False] [currently: False]
    
    display.width : int
        Width of the display in characters. In case python/IPython is running in
        a terminal this can be set to None and pandas will correctly auto-detect
        the width.
        Note that the IPython notebook, IPython qtconsole, or IDLE do not run in a
        terminal and hence it is not possible to correctly detect the width.
        [default: 80] [currently: 80]
    
    io.excel.xls.writer : string
        The default Excel writer engine for 'xls' files. Available options:
        'xlwt' (the default).
        [default: xlwt] [currently: xlwt]
    
    io.excel.xlsm.writer : string
        The default Excel writer engine for 'xlsm' files. Available options:
        'openpyxl' (the default).
        [default: openpyxl] [currently: openpyxl]
    
    io.excel.xlsx.writer : string
        The default Excel writer engine for 'xlsx' files. Available options:
        'xlsxwriter' (the default), 'openpyxl'.
        [default: xlsxwriter] [currently: xlsxwriter]
    
    io.hdf.default_format : format
        default format writing format, if None, then
        put will default to 'fixed' and append will default to 'table'
        [default: None] [currently: None]
    
    io.hdf.dropna_table : boolean
        drop ALL nan rows when appending to a table
        [default: False] [currently: False]
    
    mode.chained_assignment : string
        Raise an exception, warn, or no action if trying to use chained assignment,
        The default is warn
        [default: warn] [currently: warn]
    
    mode.sim_interactive : boolean
        Whether to simulate interactive mode for purposes of testing
        [default: False] [currently: False]
    
    mode.use_inf_as_null : boolean
        True means treat None, NaN, INF, -INF as null (old way),
        False means None and NaN are null, but INF, -INF are not null
        (new way).
        [default: False] [currently: False]
    
    展开全文
  • pandas

    2019-01-17 23:09:22
    pandas 一、pandas数据结构 pandas最核心的就是Series和DataFrame两个数据结构 名称 维度 说明 ...DataFrame可以看做是Series的容器,即:一个DataFrame可以包含若干个Series Series创建数据...

    pandas

    一、pandas数据结构

    pandas最核心的就是SeriesDataFrame两个数据结构

    名称维度说明
    Series1维带有标签的同构类型数组
    DataFrame2维表格结构,带有标签,大小可变,且可以包含异构的数据列

    DataFrame可以看做是Series的容器,即:一个DataFrame中可以包含若干个Series

    Series创建数据

    方式一: 创建Series时不指定索引,默认索引是[1, N-1]的形式

    import pandas
    
    serie1 = pandas.Series([1,2,3,4])
    
    print("serie1: \n{}\n".format(serie1))
    print("serie1.values: {}\n".format(serie1.values))
    print("serie1.index: {}\n".format(serie1.index))
    

    方式二: 创建Series时指定索引。索引未必一定需要是整数,可以是任何类型的数据,例如字符串。

    import pandas
    
    serie2 = pandas.Series([1,2,3,4,5,6,7],
         index=["a","b","c","d","e","f","g"])
         
    print("serie2: \n{}\n".format(serie2))
    print("e is {}\n".format(serie2["e"]))
    

    DataFrame创建数据

    方式一: 创建DataFrame不指定索引和列,默认的索引和列名都是[0, N-1]的形式

    import pandas
    import Numpy
    
    df2 = pandas.DataFrame(numpy.arange(16).reshape(4,4))
    print("df2:\n{}\n".format(df2))
    

    方式二: 创建DataFrame指定索引及列

    df1 =  pandas.DataFrame(numpy.arange(16).reshape(4,4),
        columns=["column1","column2","column3","column4"],
        index=["1","2","3","4"])
    
    print("df1:\n{}\n".format(df1))
    
    

    说明: numpy.arange()方法用于生成一维数组

    ​ numpy.reshape()方法将一维数组转换为多维数组

    二、pandas IO

    1. 读取文件

    pandas.read_csv(csv_file)

    三、pandas基本功能

    Series基本功能

    编号属性或方法描述
    1axes返回行轴标签列表。
    2dtype返回对象的数据类型(dtype)。
    3empty如果系列为空,则返回True
    4ndim返回底层数据的维数,默认定义:1
    5size返回基础数据中的元素数。
    6values将系列作为ndarray返回。
    7head()返回前n行。
    8tail()返回最后n行。

    DataFrame基本功能

    编号属性或方法描述
    1T转置行和列。
    2axes返回一个列,行轴标签和列轴标签作为唯一的成员。
    3dtypes返回此对象中的数据类型(dtypes)。
    4empty如果NDFrame完全为空[无项目],则返回为True; 如果任何轴的长度为0
    5ndim轴/数组维度大小。
    6shape返回表示DataFrame的维度的元组。
    7sizeNDFrame中的元素数。
    8valuesNDFrame的Numpy表示。
    9head()返回开头前n行。
    10tail()返回最后n行。

    四、pandas描述性统计

    编号函数描述
    1count()非空观测数量
    2sum()所有值之和
    3mean()所有值的平均值
    4median()所有值的中位数
    5mode()值的模值
    6std()值的标准偏差
    7min()所有值中的最小值
    8max()所有值中的最大值
    9abs()绝对值
    10prod()数组元素的乘积
    11cumsum()累计总和
    12cumprod()累计乘积
    13describe()汇总函数

    五、pandas迭代

    • Series - 值
    • DataFrame - 列标签
    • Pannel - 项目标签

    迭代DataFrame

    1. 直接迭代DataFrame 对象提取列名

    2. iteritems() 迭代(key,values)

      单独迭代每个列作为系列中的键值对

    3. iterrows() - 迭代(row_index,row)

      将行迭代为(索引,系列) 返回迭代器,产生每个索引值以及包含每行数据的序列

    4. itertuples() - 以namedtuples的形式迭代行

      DataFrame中的每一行返回一个产生一个命名元组的迭代器。元组的第一个元素将是行的相应索引值,而剩余的值是行值

    六、pandas排序

    1. 按标签排序

    sort_index() 升序

    sort_index(ascending = False) 降序

    1. 按列排序

    sort_index(axis=1)

    1. 按值排序

    sort_values(by=‘column’)

    sort_values(by=[‘columu1’,‘column2’])

    七、pandas字符串操作

    编号函数描述
    1lower()Series/Index中的字符串转换为小写。
    2upper()Series/Index中的字符串转换为大写。
    3len()计算字符串长度。
    4strip()帮助从两侧的系列/索引中的每个字符串中删除空格(包括换行符)。
    5split(' ')用给定的模式拆分每个字符串。
    6cat(sep=' ')使用给定的分隔符连接系列/索引元素。
    7get_dummies()返回具有单热编码值的数据帧(DataFrame)。
    8contains(pattern)如果元素中包含子字符串,则返回每个元素的布尔值True,否则为False
    9replace(a,b)将值a替换为值b
    10repeat(value)重复每个元素指定的次数。
    11count(pattern)返回模式中每个元素的出现总数。
    12startswith(pattern)如果系列/索引中的元素以模式开始,则返回true
    13endswith(pattern)如果系列/索引中的元素以模式结束,则返回true
    14find(pattern)返回模式第一次出现的位置,无则返回-1
    15findall(pattern)返回模式的所有出现的列表,无则返回[]
    16swapcase变换字母大小写。
    17islower()检查系列/索引中每个字符串中的所有字符是否小写,返回布尔值
    18isupper()检查系列/索引中每个字符串中的所有字符是否大写,返回布尔值
    19isnumeric()检查系列/索引中每个字符串中的所有字符是否为数字,返回布尔值。

    八、pandas选项和自定义

    • get_option(parm) 返回参数
    • set_option(param,value) 设定指定参数值
    • reset_option(param) 重置参数值
    • describe_option(param) 打印参数描述
    • option_context(param,value) 上下文管理器,临时设置参数值

    九、pandas缺失数据

    1. 检查缺失数据

      isnull() notnull()

    2. 替换缺失数据

      findna(values) : 标量值替换

      replace({old_values: new_values})

    3. 排除缺失值

      dropna(axis=0 ) 如果行内的任何值是NA,那么整个行被排除

      十、pandas分组

    4. 数据分组

    • obj.groupby(‘key’)
    • obj.groupby([‘key1’,‘key2’])
    • obj.groupby(key,axis=1)
    1. 迭代遍历分组
    2. 选择分组

    ​ obj.get_group()

    1. 聚合

    ​ obj.[‘key’].agg(np.mean)

    ​ obj.[‘key’].agg(np.size)

    ​ obj.[‘key’].agg([np.size,np.mean,np.std].)

    1. 过滤

      obj.filter(items=[‘key1’,‘key2’])

    十一、pandas合并/连接

    1. 连接 merge()
    pd.merge(left,right,on='id')
    
    1. 合并 how
    pd.merge(left,right,on='id',how='inner')
    

    参数:

    合并方法SQL等效描述
    leftLEFT OUTER JOIN使用左侧对象的键
    rightRIGHT OUTER JOIN使用右侧对象的键
    outerFULL OUTER JOIN使用键的联合
    innerINNER JOIN使用键的交集

    十二、pandas级联

    连接对象

    1.concat()连接

    pd.concat([obj1,obj2])

    pd.concat([obj1,obj2],ignore_index=True)

    pd.concat([obj1,obj2],axis=1)

    2.appen()连接

    obj1.append(obj2)

    obj1.append([obj2,obj3,obj4])

    展开全文
  • 目录PandasPandas( Python Data Analysis Library )是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。...你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一python有...
  • Python笔记:在Pandas中处理NaN值

    万次阅读 多人点赞 2018-08-03 23:49:31
    -在能够使用大型数据集训练学习算法之前,我们通常需要先清理数据, 也就是说,我们需要通过某个方法检测并更正数据的错误。 - 任何给定数据集可能会出现各种糟糕的数据,例如离群值或不正确的值,但是我们几乎...
  • pandas作者Wes McKinney 在【PYTHON FOR DATA ANALYSIS】pandas的方方面面都有了一个权威简明的入门级的介绍,但在实际使用过程,我发现书的内容还只是冰山一角。谈到pandas数据的行更新、表合并等操作,...
  • Pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换: # pandas转spark values = pandas_df.values.tolist() columns = pandas_df.columns.tolist() spark_df = spark.createDataFrame(values, columns) # ...
  • numpy, pandas axis 概念和运算过程解析 numpy 有一个 axis 概念,多维数组运算时,我们常被 axis 弄晕! 本文尝试在2维平面的表格解析 numpy 4-d array 的运算过程。 在 numpy, pandas ,很多函数,尤其是...
  • Pandas

    2020-12-14 14:20:04
    5.1Pandas介绍 学习目标 目标 了解什么是pandas 了解Numpy与Pandas的不同 知道使用pandas的优势 1. 简介 1.1 定义 2008年WesMcKinney开发出的库 专门用于数据挖掘的开源python库 以Numpy为基础,借力Numpy模块在...
  • **kwargs): for key, value in kwargs.items(): x += value return x # **kwarg接收传递的字典参数 df6 = df5.apply(add, ag=1, ql=2, sd=3) print(df6) # value接收了传递的元组参数 df7 = df5.apply(subtract, ...
  • ValueError: Wrong number of items passed 6, placement implies 0 我的解决方法就是升级了pandas版本 之前是0.24.1的,然后升级到1.0.5
  • 导读Pandas之于日常数据分析工作的重要地位不言而喻,而灵活的数据访问则是其中的一个重要环节。本文旨在讲清Pandas中的9种数据访问方式,包括范围读取和条件查询等。Pandas中的核心...
  • PythonPandas

    2019-01-19 15:15:59
    在本文,我们用titanic.csv的数据进行分析 一、加载数据 import pandas as pd # Read from CSV to Pandas DataFrame df = pd.read_csv("titanic.csv", header=0) 二、数据分析 1、查看...
  • PythonPandas模块

    千次阅读 2018-10-14 17:32:32
    Pandas Series 序列的创建 序列的读取  DataFrame DataFrame的创建  DataFrame数据的读取 Panel Panel的创建  Pandas Pandas ( Python Data Analysis Library )是基于NumPy 的一种工具,该工具是为了...
  • 说明: 这里只是简单的说明了一些pandas中的一些我在毕设使用到的函数,这个 模块的并未具体其他的一些功能并未详细的进行说明。 pandas 简单介绍 Python语言的Pandas模块是一种高效结构化数据分析工具,它在NumPy...
  • pandas中的常用索引方式总结(一)

    千次阅读 2019-01-09 14:40:54
    pandas中的常用索引方式总结(一)–df[]方式 import pandas as pd import numpy as np 1.Series对象 s1 = pd.Series(np.array([1,2,3,4])) print(s1) print("---------------------------") s2 = pd....
  • python的pandas库是一个非常好的工具,里面的DataFrame更是常用且好用,最近是越用越觉得设计的漂亮,pandas的很多细节设计的都非常好,有待使用过程发掘。 好了,发完感慨,说一下最近DataFrame遇到的一个细节:...
  • Pandas中聚类计算与相关性统计

    千次阅读 2019-05-28 14:22:22
    Pandas中聚类计算与相关性统计 首先,数学基础: 相关系数: 相关关系是一种非确定性的关系,相关系数是研究变量之间线性相关程度的量。由于研究对象的不同,相关系数有如下几种定义方式。 简单相关系数:又叫相关系数...
  • Pandas中DataFrame的属性及方法大全

    千次阅读 2020-07-29 10:30:20
    返回DataFrame的dtype。 empty 指示DataFrame是否为空。 iat 通过整数位置访问行/列对的单个值。 iloc 基于位置的纯基于整数位置的索引。 index DataFrame的索引(行标签)。 loc 通过标签或布尔数组...
  • pandas小记:pandas汇总统计函数

    万次阅读 2014-05-12 15:37:21
    它们大部分都属于约简和汇总统计,用于从Series提取的个值(如sum或mean)或从DataFrame的行或列提取一个Series。跟对应的NumPy数组方法相比,它们都是基于没有缺失数据的假设而构建的。数学运...
  • pandas入门

    2019-01-08 18:02:27
    目录 Pandas 简介 下载 Pandas ...访问和删除 Pandas Series 的元素 对 Pandas Series 执行算术运算 创建 Pandas DataFrame 使用Pandas Series 字典创建 DataFrame 使用列表(数组)字典创建 Dat...
  • DataFrame.from_csv(path[, header, sep, …]) #Read CSV file (DEPRECATED, please use pandas.read_csv() instead). DataFrame.from_dict(data[, orient, dtype]) #Construct DataFrame from dict of array-like ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,025
精华内容 4,810
关键字:

pandas中items