精华内容
下载资源
问答
  • for idx in lt: # 遍历排序后的索引 distribution = (data.loc[[idx]]['需求数量'] - data.loc[[idx]]['30天销量']).item() # 分配量 if distribution < 0: # 跳过条件 continue if data['最终分配数量']....
  • pandas用法示例

    2018-08-08 20:04:26
    示例:用特定于分组的值填充缺失值 对于缺失数据的清理工作,有时你会用dropna将其替换掉,而有时则可能会希望用一个固定值或由数据集本身所衍生出来的值去填充NA值。这时就得使用fillna这个工具了。在下面这个例子...

    示例:用特定于分组的值填充缺失值

    对于缺失数据的清理工作,有时你会用dropna将其替换掉,而有时则可能会希望用一个固定值或由数据集本身所衍生出来的值去填充NA值。这时就得使用fillna这个工具了。在下面这个例子中,我用平均值去填充NA值:

    In [91]: s = pd.Series(np.random.randn(6))
    
    In [92]: s[::2] = np.nan
    
    In [93]: s
    Out[93]: 
    0         NaN
    1   -0.125921
    2         NaN
    3   -0.884475
    4         NaN
    5    0.227290
    dtype: float64
    
    In [94]: s.fillna(s.mean())
    Out[94]: 
    0   -0.261035
    1   -0.125921
    2   -0.261035
    3   -0.884475
    4   -0.261035
    5    0.227290
    dtype: float64

    假设你需要对不同的分组填充不同的值。一种方法是将数据分组,并使用apply和一个能够对各数据块调用fillna的函数即可。下面是一些有关美国几个州的示例数据,这些州又被分为东部和西部:

    In [95]: states = ['Ohio', 'New York', 'Vermont', 'Florida',
       ....:           'Oregon', 'Nevada', 'California', 'Idaho']
    
    In [96]: group_key = ['East'] * 4 + ['West'] * 4
    
    In [97]: data = pd.Series(np.random.randn(8), index=states)
    
    In [98]: data
    Out[98]: 
    Ohio          0.922264
    New York     -2.153545
    Vermont      -0.365757
    Florida      -0.375842
    Oregon        0.329939
    Nevada        0.981994
    California    1.105913
    Idaho        -1.613716
    dtype: float64

    [‘East’] * 4产生了一个列表,包括了[‘East’]中元素的四个拷贝。将这些列表串联起来。

    将一些值设为缺失:

    In [99]: data[['Vermont', 'Nevada', 'Idaho']] = np.nan
    
    In [100]: data
    Out[100]: 
    Ohio          0.922264
    New York     -2.153545
    Vermont            NaN
    Florida      -0.375842
    Oregon        0.329939
    Nevada             NaN
    California    1.105913
    Idaho              NaN
    dtype: float64
    
    In [101]: data.groupby(group_key).mean()
    Out[101]: 
    East   -0.535707
    West    0.717926
    dtype: float64

    我们可以用分组平均值去填充NA值:

    In [102]: fill_mean = lambda g: g.fillna(g.mean())
    
    In [103]: data.groupby(group_key).apply(fill_mean)
    Out[103]: 
    Ohio          0.922264
    New York     -2.153545
    Vermont      -0.535707
    Florida      -0.375842
    Oregon        0.329939
    Nevada        0.717926
    California    1.105913
    Idaho         0.717926
    dtype: float64

    另外,也可以在代码中预定义各组的填充值。由于分组具有一个name属性,所以我们可以拿来用一下:

    In [104]: fill_values = {'East': 0.5, 'West': -1}
    
    In [105]: fill_func = lambda g: g.fillna(fill_values[g.name])
    
    In [106]: data.groupby(group_key).apply(fill_func)
    Out[106]: 
    Ohio          0.922264
    New York     -2.153545
    Vermont       0.500000
    Florida      -0.375842
    Oregon        0.329939
    Nevada       -1.000000
    California    1.105913
    Idaho        -1.000000
    dtype: float64
    展开全文
  • python数据分析之numpy-pandas-matplotlib-常用代码示例,是python的源代码文件,总结到位,并且包含示例的数据文件,不用再找了。注释比较详细,适合新手入门,老手回顾。每个源文件命名一看就知道是起什么作用,...
  • import pandas as pd import numpy as np dates = pd.date_range('20180525',periods=6) dates import pandas as pd import numpy as np dates = pd.date_range('20180525',periods=6) mytbl = pd......
    import pandas as pd
    import numpy as np 
    dates = pd.date_range('20180525',periods=6)
    dates

    import pandas as pd
    import numpy as np 
    dates = pd.date_range('20180525',periods=6)
    mytbl = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
    mytbl

     

    mytbl.sort_values(by='B')

    matplotlib.pyplot模块下的波状图,本人数学不好,准备那这个模块的相关功能装装逼,附庸一下风雅。由图中可以看出,centos7中ylabel对中文的支持不太好,不知windows系统有无改善。

    转载于:https://www.cnblogs.com/saintdingspage/p/9621291.html

    展开全文
  • import pandas as pd #DataFrame的操作方法见 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html data_part1 = pd.read_csv('meinian_round1_data_part1_20180408.txt', s...
    import numpy as np
    import pandas as pd
    #DataFrame的操作方法见 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html
    data_part1 = pd.read_csv('meinian_round1_data_part1_20180408.txt', sep='$', low_memory=False)
    data_part2 = pd.read_csv('meinian_round1_data_part2_20180408.txt', sep='$', low_memory=False)
    
    #数据的维度
    data_part1.shape
    data_part2.shape
    #数据的列名
    data_part1.columns
    #第一行的table_id
    data_part1.table_id[0]
    
    #拼接两个数据,参数axis=0表示上下拼接,axis=1表示左右拼接
    data_part = pd.concat( [df1,df2],axis=0).reset_index()
    data_part.shape
    
    def saveTable_id_size_type(data_part,fileName):
        #全部的体检项 2795 个
        table_ids = data_part.table_id.unique()
        print("一共有:%s个体检项目" % len(table_ids))
        
        #未查全部替换为NaN  DataFrame属性的操作方法见 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html
        data_part.field_results.replace('未查',np.nan,inplace=True)
        data_part.field_results.replace('弃查',np.nan,inplace=True)
        
        #每个体检项的数据情况 字符还是数字?有多少不重复的可选项?
        table_id_size_type=[]
        #table_id_dict={}
        strNum=0
        for table_id in table_ids:
            subData = data_part[(data_part.table_id==table_id)]
            field_results = subData.field_results.unique()
            size_type=[]
            dtype = 'float'
            first=field_results[0]
            for rs in field_results:
                try:
                    min = float(rs)
                except:
                    dtype='str'
                    first=rs
                    strNum=strNum+1
                    break
            
            size_type.append(len(field_results))
            size_type.append(dtype)
            size_type.append(first)
            table_id_size_type.append(size_type)
            #table_id_dict[table_id]=size_type
            print(table_id,size_type)
        
        #用DataFrame的to_csv()保存到csv
        df = pd.DataFrame(table_id_size_type)
        df.columns = ['size','dtype','first']
        df.insert(0,'table_id',table_ids)
        df=df.sort_values(by='size')
        df.to_csv(fileName,index=None,sep='$')
    
    saveTable_id_size_type(data_part,'table_id_dict.csv')
    #只有一个选项的体检项没有用,应该去掉
    subData = data_part[(data_part.table_id=='8401')]
    subData = data_part[(data_part.table_id=='789033')]
    
    #只有两个选项的数据 有些项目的体检人数也很少,应该去掉
    subData = data_part[(data_part.table_id=='509060')]
    
    #只有三个选项的数据
    subData = data_part[(data_part.table_id=='G99122')]
    
    
    #下面来看看待预测数据,共有 9538 个用户  -- 先用记事本打开meinian_round1_test_a_20180409.csv,然后再另存为 utf-8格式
    data_test = pd.read_csv('meinian_round1_test_a_20180409.csv', sep=',', low_memory=False)
    #将待预测用户的体检数据查询加载进来(相当于左连接查询 data_test inner join data_part on data_test.vid=data_part.vid)
    data_test = pd.merge(data_test,data_part)
    #统计体检项保存到csv文件
    saveTable_id_size_type(data_test,'table_id_dict_test.csv')
    
    #-----第二天---------------------------------------------------------------------------------------
    #体检项去掉没有用的
    table_id_dict_test = pd.read_csv('table_id_dict_test.csv', sep='$', low_memory=False)
    table_id_dict_test = table_id_dict_test.loc[:,['table_id','size','dtype']]
    table_id_dict_test = table_id_dict_test[(table_id_dict_test['size']>2)]
    table_id_dict = pd.read_csv('table_id_dict.csv', sep='$', low_memory=False)
    table_id_dict = table_id_dict.loc[:,['table_id','size','dtype']]
    table_id_dict = table_id_dict[(table_id_dict['size']>2)]
    #只取预测集及测试集都有的体检项
    tableIds = pd.merge(table_id_dict_test,table_id_dict,on=['table_id','dtype'])
    
    #体检表
    data_part1 = pd.read_csv('meinian_round1_data_part1_20180408.txt', sep='$', low_memory=False)
    data_part2 = pd.read_csv('meinian_round1_data_part2_20180408.txt', sep='$', low_memory=False)
    data_part = pd.concat( [data_part1, data_part2],axis=0).reset_index()
    #训练用户
    user_train = pd.read_csv('meinian_round1_train_20180408.csv', sep=',', low_memory=False)
    user_train.columns=['vid', 'y1', 'y2', 'y3', 'y4', 'y5']
    user_train = user_train[(user_train['y1']!='未查')]
    user_train = user_train[(user_train['y2']!='未查')]
    user_train = user_train[(user_train['y3']!='未查')]
    
    user_train = user_train[(user_train['y1']!='弃查')]
    user_train = user_train[(user_train['y2']!='弃查')]
    user_train = user_train[(user_train['y3']!='弃查')]
    
    #
    #测试用户
    user_test = pd.read_csv('meinian_round1_test_a_20180409.csv', sep=',', low_memory=False)
    user_test.columns=['vid', 'y1', 'y1', 'y3', 'y4', 'y5']
    
    #空值转换为0
    def toFloat(x):
        try:
            v = float(x)
            if(v>0):
                return v
            else:
                return 0;
        except TypeError as err:
            return 0
    
    from scipy.sparse import csr_matrix
    from sklearn.feature_extraction.text import CountVectorizer
    from sklearn.feature_extraction.text import TfidfTransformer
    from sklearn import preprocessing
    #稀疏矩阵数组
    train_sparses=[]
    test_sparses=[]
    #对于的体检项
    sparses_tableId=[]
    diuqi = 0
    for index, tableId in tableIds.iterrows():
        #print(tableId.table_id,tableId['dtype'])
        #取得当前体检项的所有数据
        data = data_part[(data_part.table_id==tableId.table_id)]
        #同一用户重复的体检项保留最后一项
        data = data.drop_duplicates(subset=['vid'],keep='last')
        data.field_results.replace('未查',np.nan,inplace=True)
        data.field_results.replace('弃查',np.nan,inplace=True)
        if data.shape[0]<50:
            #舍去太少数据的体检项
            diuqi = diuqi + 1
            print('丢弃',tableId.table_id)
        else: 
            print('table_id',tableId.table_id)
            sparses_tableId.append(tableId)
            #取得训练用户-体检表
            data_train = pd.merge(user_train,data,how='left')
            #取得测试用户-体检表
            data_test = pd.merge(user_test,data,how='left')
            if 'float'==tableId['dtype']:
                #数值类型的体检项,直接构建稀疏矩阵
                
                #空值转换为0
                rs_train = data_train.field_results.apply(toFloat)
                #体检结果转换为稀疏矩阵
                train_sparses.append( csr_matrix(rs_train.values.reshape(-1,1)) )
                        
                #空值转换为0
                rs_test = data_test.field_results.apply(toFloat)            
                #体检结果转换为稀疏矩阵
                test_sparses.append( csr_matrix(rs_test.values.reshape(-1,1)) )
            else:
                train_feature = data_train.field_results
                train_feature = train_feature.where(train_feature.notnull(), '')
                train_feature = train_feature.values
                test_feature = data_test.field_results
                test_feature = test_feature.where(test_feature.notnull(), '')
                if tableId['size_x']<10:
                    #可选项少的用one-hot处理
                    #第一步 文本转换为整数
                    label_encoder = preprocessing.LabelEncoder()
                    integer_train = label_encoder.fit_transform(train_feature)
                    #避免y contains new labels 测试数据出现了训练数据中没有的选项
                    test_feature = test_feature.apply(lambda s: '' if s not in label_encoder.classes_ else s)
                    test_feature = test_feature.values
                    integer_test = label_encoder.transform(test_feature)
                    #第二步 转换为one-hot处理
                    enc = preprocessing.OneHotEncoder()
                    onehot_train=enc.fit_transform(integer_train.reshape(-1,1))
                    onehot_test=enc.transform(integer_test.reshape(-1,1))
                    train_sparses.append(onehot_train)
                    test_sparses.append(onehot_test)                
                else:
                    test_feature = test_feature.values
                    #文本用TF-IDF处理
                    #第一步 TF
                    count_vect = CountVectorizer()
                    train_counts = count_vect.fit_transform(train_feature)
                    test_counts = count_vect.transform(test_feature)
                    #第二步 TF-IDF
                    tfidf_transformer =  TfidfTransformer()
                    train_tfidf = tfidf_transformer.fit_transform(train_counts)
                    test_tfidf = tfidf_transformer.transform(test_counts)
                    train_sparses.append(train_tfidf)
                    test_sparses.append(test_tfidf)
                    print(train_tfidf.shape)
    
    #将各体检项的稀疏矩阵破解为一个大的矩阵
    from scipy.sparse import hstack   
    train_sparse = csr_matrix((user_train.shape[0],0))
    test_sparse = csr_matrix((user_test.shape[0],0))
    for trainsp,testsp,tableId in zip(train_sparses,test_sparses,sparses_tableId):
        print(trainsp.shape[0],testsp.shape[0],tableId.table_id,tableId['dtype'],tableId['size_x'],tableId['size_y'])
        train_sparse = hstack([train_sparse,trainsp]);
        test_sparse = hstack([test_sparse,testsp]);
                    
    #保存稀疏矩阵,以备用
    from scipy.sparse import save_npz
    save_npz('train_sparse.npz', train_sparse)
    save_npz('test_sparse.npz', test_sparse)
    #----------------以上都是特征工程-----------------
                 
    #训练模型及预测
    import xgboost as xgb
    model = xgb.XGBRegressor(max_depth=5, learning_rate=0.1, n_estimators=160, silent=True, objective='reg:gamma')
    y_train = user_train.y1.astype('float64')
    y_train = y_train.values.reshape(-1,1)
    model.fit(train_sparse, y_train)
    # 对测试集进行预测
    p_y1 = model.predict(test_sparse)
    
    # 显示重要特征 重要特征(值越大,说明该特征越重要)
    from xgboost import plot_importance
    from matplotlib import pyplot as plt
    plot_importance(model)
    plt.show()
    
    展开全文
  • import pandas as pd # 读取数据 data = pd.read_csv('D:\\yangyang\\spy\\nltksample\\mySpider\\teachers.csv', header=0) print(data.head()) # read_csv:读取CSV文件。 # read_excel:读取XLS文件。 # read_hdf...
    import pandas as pd
    # 读取数据
    data = pd.read_csv('D:\\yangyang\\spy\\nltksample\\mySpider\\teachers.csv', header=0)
    print(data.head())
    # read_csv:读取CSV文件。
    # read_excel:读取XLS文件。
    # read_hdf:读取HDFS文件。
    # read_sql:读取SQL文件。
    # read_json:读取JSON文件。
    data = pd.read_csv('D:\\yangyang\\spy\\nltksample\\mySpider\\teachers.csv', names=['info', 'name', 'title'],  header=0)
    print(data.head())
    # describe()函数提供了每列的简短摘要和唯一值
    print(data.describe())
    # print(data)
    
    sepal_len_cnt = data['name'].value_counts()
    print(sepal_len_cnt)
    print(data['title'].value_counts())
    
    # 查找列的每一个值
    print(data['name'] == '王老师')
    
    sntsosa = data[data['name'] == '王老师']
    print(sntsosa[:5])
    
    # 时序数据
    stock_data = pd.read_csv('D:\\yangyang\\spy\\nltksample\\008\\600000.csv', encoding='gbk', nrows=100)
    print(stock_data)
    
    # 列转换
    # stock_data.drop(["percent_change_volume_over_last_wk"], axis=1)
    # 过滤掉一些不必要的列,并使用有限的列
    # stockdata_new = pd.DataFrame(stockdata, columns=["stock","open","high"
    # ,"low","close","volume"])
    # 噪声数据

     

    展开全文
  • Pandas是其中的一种,使导入和分析数据更加容易。DataFrame.astype()方法用于将pandas对象转换为指定的dtype。astype()函数还提供了将任何合适的现有列转换为分类类型的功能。DataFrame.astype()当我们想将特定的列...
  • 示例代码 这里的查询数据相当于R语言里的subset功能,可以通过布尔索引有针对的选取原数据的子集、指定行、指定列等。我们先导入一个student数据集: student = pd.io.parsers.read_csv('C:\\Users\\admin\\Desktop...
  • 我创建了这个pandas函数的备忘单。这不是一个全面的列表,但包含了我在构建机器学习模型中最常用的函数。让我们开始吧! 本附注的结构: 导入数据 导出数据 创建测试对象 查看/检查数据 选择查询 数据清理 筛选、排序...
  • 1. Pandas_UDF介绍 PySpark和Pandas之间改进性能和互操作性的其核心思想是将Apache Arrow作为序列化格式,以减少PySpark和Pandas之间的开销。 Pandas_UDF是在PySpark2.3中新引入的API,由Spark使用Arrow传输数据,...
  • pandas.merge_ordered(left, right, on=None, left_on=None, right_on=None, left_by=None, right_by=None, fill_method=None, suffixes=('_x', '_y'), how='outer')
  • Pandas数据分析示例

    2019-11-11 23:14:39
    前段时间从拉勾网上爬取了数据分析岗位的招聘信息,今天就以此数据源作为示例,跟大家分享Pandas数据分析入门应用。本文不再讨论爬取的实现过程,具体可参考另一篇博文,地址为学习爬虫的常见问题分享(三)—爬虫遇...
  • Pandas哑变量编码函数 get_dummies()函数可以将分类变量转换为哑变量/指示变量,结果生成一个行数等于数据的元素个数,列数等于变量数,列名为各变量名的DataFrame,对应分类变量的位置取值为1,其余位置取值为0。 ...
  • Pandas是其中的一种,使导入和分析数据更加容易。Pandas dataframe.mean()函数返回所请求轴的平均值。如果将方法应用于 Pandas 系列对象,则该方法将返回标量值,该标量值是 DataFrame 中所有观测值的平均值。如果...
  • Pandas是其中的一种,使导入和分析数据更加容易。Pandas rename()方法用于重命名任何索引,列或行。列的重命名也可以通过dataframe.columns = [#list]。但在上述情况下,自由度不高。即使必须更改一列,也必须传递...
  • Pandas是其中的一种,使导入和分析数据更加容易。dataframe.abs()是最简单的pandas DataFrame 功能之一。它返回带有绝对值的对象,并且仅适用于所有数字对象。它也不具有任何Nan值。abs()函数也可以与复数一起使用...
  • Pandas是其中的一种,使导入和分析数据更加容易。Pandas endswith()是在系列或 DataFrame 中搜索和过滤文本数据的另一种方法。此方法类似于Python的endswith()方法,但参数不同,并且仅适用于Pandas对象。因此,....
  • Pandas是其中的一种,使导入和分析数据更加容易。Pandas dataframe.info()函数用于获取 DataFrame 的简要摘要。在对数据进行探索性分析时,它非常方便。为了快速浏览数据集,我们使用dataframe.info()功能。用法: ...
  • 最近总是和excel打交道,由于数据量较大,人工来修改某些数据可能会有点浪费时间,这时候就使用到了Python数据处理的神器—–Pandas库,话不多说,直接上Pandas。 二、安装 这次使用的python版本是python2.7,安装...
  • Pandas 系列是带有轴标签的一维ndarray。标签不必是唯一的,但必须是可哈希的类型。该对象同时支持基于整数和基于标签的索引,并提供了许多方法来执行涉及索引的操作。Pandas Series.mean()函数返回给定Series对象中...
  • from numpy import array m = array([1,2,3,4]) p = array([1,2,3,4]) j = array([1,2,3],[1,2,3])#多维数组 print(m,p) print(m+p) #数组元素相加 print(m*2) #数组元素加倍 print(m**3) #数组元素乘方 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,984
精华内容 8,393
关键字:

pandas代码示例