Pandas использует DataFrame для соревнований по расширенному анализу данных (1)

искусственный интеллект анализ данных pandas

Набор данных, используемый в этом посте, представляет собой CSV-таблицу навыков футболистов и их ценности, содержащую более 60 полей. Ссылка для скачивания набора данных:набор данных

1. DataFrame.info()

Эта функция может выводить некоторую специфическую информацию, считанную в таблицу. Это очень полезно для ускорения предварительной обработки данных.

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('dataset/soccer/train.csv')
print(data.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10441 entries, 0 to 10440
Data columns (total 65 columns):
id                          10441 non-null int64
club                        10441 non-null int64
league                      10441 non-null int64
birth_date                  10441 non-null object
height_cm                   10441 non-null int64
weight_kg                   10441 non-null int64
nationality                 10441 non-null int64
potential                   10441 non-null int64
                   ...
dtypes: float64(12), int64(50), object(3)
memory usage: 5.2+ MB
None

2. DataFrame.запрос()

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('dataset/soccer/train.csv')
print(data.query('lw>cf'))      # 这两个方法是等价的
print(data[data.lw > data.cf])  # 这两个方法是等价的

3. DataFrame.value_counts()

Эта функция подсчитывает частоту различных значений в столбце.

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('dataset/soccer/train.csv')
print(data.work_rate_att.value_counts())
Medium    7155
High      2762
Low        524
Name: work_rate_att, dtype: int64

4. DataFrame.sort_values()

Вывод сортируется по значению столбца.

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('dataset/soccer/train.csv')
print(data.sort_values(['sho']).head(5))

5. DataFrame.groupby()

  • Сгруппируйте по признаку столбца национальности, а затем рассчитайте среднее значение потенциала той же национальности.
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('dataset/soccer/train.csv')
potential_mean = data['potential'].groupby(data['nationality']).mean().head(5)
print(potential_mean)
nationality
1    74.945338
2    72.914286
3    67.892857
4    69.000000
5    70.024242
Name: potential, dtype: float64
  • Сгруппируйте по атрибутам двух столбцов национальности и клуба, а затем рассчитайте среднее значение потенциала игрока.
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('dataset/soccer/train.csv')
potential_mean = data['potential'].head(20).groupby([data['nationality'], data['club']]).mean()
print(potential_mean)
nationality  club
1            148     76
             461     72
5            83      64
29           593     68
43           213     67
51           258     62
52           112     68
54           604     81
63           415     70
64           359     74
78           293     73
90           221     70
96           80      72
101          458     67
111          365     64
             379     83
             584     65
138          9       72
155          543     72
163          188     71
Name: potential, dtype: int64

Стоит отметить, что после группирующей функциииспользовать размер ()Функция может вернуть результат с размером группы.

potential_mean = data['potential'].head(200).groupby([data['nationality'], data['club']]).size()
nationality  club
1            148     1
43           213     1
51           258     1
52           112     1
54           604     1
78           293     1
96           80      1
101          458     1
155          543     1
163          188     1
Name: potential, dtype: int64

6. DataFrame.agg()

Эта функция обычно используется после функции groupby.

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('dataset/soccer/train.csv')
potential_mean = data['potential'].head(10).groupby(data['nationality']).agg(['max', 'min'])
print(potential_mean)
            max  min
nationality          
1             76   76
43            67   67
51            62   62
52            68   68
54            81   81
78            73   73
96            72   72
101           67   67
155           72   72
163           71   71

7. DataFrame.apply()

Применение функции к столбцу или строке может значительно ускорить обработку.

import pandas as pd
import matplotlib.pyplot as plt


#  返回球员出生日期中的年份
def birth_date_deal(birth_date):
    year = birth_date.split('/')[2]
    return year

data = pd.read_csv('dataset/soccer/train.csv')
result = data['birth_date'].apply(birth_date_deal).head() 
print(result)
0    96
1    84
2    99
3    88
4    80
Name: birth_date, dtype: object

Конечно, если вы используете лямбда-функцию, код будет более лаконичным:

data = pd.read_csv('dataset/soccer/train.csv')
result = data['birth_date'].apply(lambda x: x.split('/')[2]).head()
print(result)