Кадры данных Pandas допускают логическое индексирование, что является довольно эффективным способом фильтрации фрейма данных для нескольких условий. При логическом индексировании логические векторы, сгенерированные на основе условий, используются для фильтрации данных. Множественные условия с операторами | (для операции или), & (для операции и) и ~ (для операции не) могут быть сгруппированы с помощью круглых скобок ()
Используйте операторы &, |, ~ вместо и, или, соответственно нет
Pandas предоставляет операторы & (для и), | (для или) и ~ (для нет), чтобы применять логические операции к рядам и объединять несколько условий вместе при фильтрации кадра данных pandas. Если вместо этого вы используете логические операторы Python, это приведет к ошибке.
(.env) boris@boris-All-Series:~/PANDAS$ cat samplePandas1.py
import pandas as pd
data = {
'Name': ['Microsoft Corporation', 'Google, LLC', 'Tesla, Inc.',\
'Apple Inc.', 'Netflix, Inc.'],
'Symbol': ['MSFT', 'GOOG', 'TSLA', 'AAPL', 'NFLX'],
'Industry': ['Tech', 'Tech', 'Automotive', 'Tech', 'Entertainment'],
'Shares': [100, 50, 150, 200, 80]
}
df = pd.DataFrame(data)
print(df)
print('\n')
df_filtered = df[(df['Industry']=='Tech')&(df['Shares']>=100)]
print(df_filtered)
print('\n')
df_filtered = df[(df['Shares']>=100) & (df['Shares']<=150)]
print(df_filtered)
(.env) boris@boris-All-Series:~/PANDAS$ python3 samplePandas1.py
Name Symbol Industry Shares
0 Microsoft Corporation MSFT Tech 100
1 Google, LLC GOOG Tech 50
2 Tesla, Inc. TSLA Automotive 150
3 Apple Inc. AAPL Tech 200
4 Netflix, Inc. NFLX Entertainment 80
Name Symbol Industry Shares
0 Microsoft Corporation MSFT Tech 100
3 Apple Inc. AAPL Tech 200
Name Symbol Industry Shares
0 Microsoft Corporation MSFT Tech 100
2 Tesla, Inc. TSLA Automotive 150
Выбор всех строк из данного фрейма данных, в которых «Возраст» равен 21, а «Поток» присутствует в списке параметров с использованием .loc[].
(.env) boris@boris-All-Series:~/PANDAS$ cat samplePandas2.py
import pandas as pd
record = {
'Name': ['Ankit', 'Amit', 'Aishwarya', 'Priyanka', 'Priya', 'Shaurya' ],
'Age': [21, 19, 20, 18, 17, 21],
'Stream': ['Math', 'Commerce', 'Science', 'Math', 'Math', 'Science'],
'Percentage': [88, 92, 95, 70, 65, 78]}
# create a dataframe
dataframe = pd.DataFrame(record, columns = ['Name', 'Age', 'Stream', 'Percentage'])
print("Given Dataframe :\n", dataframe)
options = ['Math']
# selecting rows based on condition
rslt_df = dataframe.loc[(dataframe['Age'] == 21) &
dataframe['Stream'].isin(options)]
print('\nResult dataframe :\n', rslt_df)
(.env) boris@boris-All-Series:~/PANDAS$ python3 samplePandas2.py
Given Dataframe :
Name Age Stream Percentage
0 Ankit 21 Math 88
1 Amit 19 Commerce 92
2 Aishwarya 20 Science 95
3 Priyanka 18 Math 70
4 Priya 17 Math 65
5 Shaurya 21 Science 78
Result dataframe :
Name Age Stream Percentage
0 Ankit 21 Math 88
Базовый подход
(.env) boris@boris-All-Series:~/PANDAS$ cat samplePandas3.py
import pandas as pd
record = {
'Name': ['Ankit', 'Amit', 'Aishwarya', 'Priyanka', 'Priya', 'Shaurya' ],
'Age': [21, 29, 20, 18, 27, 21],
'Stream': ['Math', 'Commerce', 'Science', 'Math', 'Math', 'Science'],
'Percentage': [88, 92, 95, 70, 65, 78]}
# create a dataframe
dataframe = pd.DataFrame(record, columns = ['Name', 'Age', 'Stream', 'Percentage'])
print("Given Dataframe :\n", dataframe)
options = ['Math', 'Commerce']
# selecting rows based on condition
rslt_df = dataframe[(dataframe['Age'] > 21) &
dataframe['Stream'].isin(options)]
print('\nResult dataframe :\n', rslt_df)
(.env) boris@boris-All-Series:~/PANDAS$ python3 samplePandas3.py
Given Dataframe :
Name Age Stream Percentage
0 Ankit 21 Math 88
1 Amit 29 Commerce 92
2 Aishwarya 20 Science 95
3 Priyanka 18 Math 70
4 Priya 27 Math 65
5 Shaurya 21 Science 78
Result dataframe :
Name Age Stream Percentage
1 Amit 29 Commerce 92
4 Priya 27 Math 65
No comments:
Post a Comment